"Request Header Or Cookie Too Large" nginx 与proxy_pass



我在服务器上有以下NGINX设置(Internet面对,仅相关部分):

upstream new_api {
  server unix:///home/ubuntu/new_api/shared/tmp/sockets/puma.sock;
}
server {
  listen 80 default_server;
  listen [::]:80 default_server;
  large_client_header_buffers 4 16k;
  ssl_certificate           /etc/nginx/cert.crt;
  ssl_certificate_key       /etc/nginx/cert.key;
  location ~ (^(/some/location|/some/other)) {
    proxy_pass http://new_api;
  }
  location / {
    proxy_pass https://serverB.com;
  }
}

现在,如果我转到/some/location,则可以与上游新的API一起使用。但是,有了其他任何东西,我一直从Nginx获得" 400不良请求标头或cookie太大"。即使卷发没有饼干,只有两个短标题。增加large_client_header_buffers无济于事。

有趣的部分是我根本看不到此请求到服务器B,因此在服务器A上被切断了。为什么?可以是因为https协议,我要拿到?

另外,在设置服务器之前,所有问题都将毫无问题。

事实证明,有一些与域分辨率的混音(我真的不理解),因此,对服务器B的请求传递给服务器A。它一直将自己的IP添加到X-Forwarded-For标题,直到超过最大大小为止 - 因此错误消息实际上是正确的。

要进一步调试,我使用了

tcpdump -n -S -s 0 -A 'tcp dst port 80' | grep -B3 -A10 "GET"

最新更新