nginx 反向代理 502 Bad Gateway

查看nginx的error.log日志文件发现如下信息:

upstream sent too big header while reading response header from upstream
原因是:

nginx缓冲区有一个bug造成的,网站的页面消耗占用缓冲区可能过大。

proxy是nginx作为client转发时使用的,如果header过大,超出了默认的1k,就会引发上述的upstream sent too big header

说白了就是nginx把外部请求转给后端(如apache),apache返回的header太大,导致nginx处理不过来。

解决方法:

代理主机的配置文件中添加如下代码:

upstream site  {
    server 127.0.0.1:8080;
}

server {
    listen 80;

    server_name  www.site.com;

    location / {
        proxy_pass  http://site;
        

        #下面这三段代码是需要添加的。
        proxy_buffer_size 64k;
        proxy_buffers 32 32k;
        proxy_busy_buffers_size 128k;
   }
}