今天在使用Nginx做反向代理出现了400 Bad Request Request Header Or Cookie Too Large这个问题,很多人说Nginx配置不对等等,
1
2
3
4
server_names_hash_bucket_size 128;
client_header_buffer_size 16k;
large_client_header_buffers 4 4k;
client_max_body_size 1024m;
这几个配置是都有的,所以肯定不是这个原因,因为只加了一个反向代理,所以其他地方应该没有问题,参考网友的解决方案,应该是造成了死循环引起的。
参考一
应该是nginx在使用proxy_pass做跳转时,如果直接使用域名,且需要向后端提交当前访问的IP地址时,引发nginx的bug造成死循环。
参考二
也可以尝试添加host为反向代理的地址。
www.jyall.com 域名 proxy_pass 到 https://jiaju.jyall.me/latestrelease 的url。 jiaju.jyall.me 是 apirouter 带请求头 “www.jyall.com" 又去请求 www.jyall.com 这个域名,造成死循环。
解决方案如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
server{
server www.jyall.com;
location /latestrelease {
proxy_set_header Host "jiaju.jyall.me";
proxy_set_header X-Real-IP $remote_addr;
proxy_pass https://jiaju.jyall.me/latestrelease;
}
}
再次 proxy_pass 到 jiaju.jyall.me 请求的时候应该为 jiaju.jyall.me 而不是 www.jyall.com 的头。
这个问题还是比较懵懂,需要继续考证。