Nginx总报错upstream sent too big header的处理方法
我的软件环境是Nginx+PHP-FPM
这个问题纠缠了我好长时间,今天把nginx加上debug选项重新编译安装了一下,修改log级别为debug之后在日志里看到了原因:
tail -f /usr/local/nginx/logs/error.log
2012/03/30 01:54:21 [error] 19326#0: *281114 upstreamsent too big header while reading response header from upstream, client: 119.253.59.51, server: www.xxx.com, request: "GET /cron/dis HTTP/1.1", upstream: "fastcgi://127.0.0.1:9000", host: "www.xxx.net"
原来是setcookie用得太多导致header过大,但是php语句又不能随便修改。
于是我在Google一番后在nginx.conf里加了如下代码:
1 client_header_buffer_size 128k;
2 large_client_header_buffers 8 64k;
cookie再多加一起也不会超过10k 我想已经足够了吧,但是情况依旧。
后来再次经过一番努力查找,终于找到了解决方法:
01proxy_buffer_size 64k;
02proxy_buffers 8 64k;
03proxy_busy_buffers_size 128k;
04client_header_buffer_size 64k;
05large_client_header_buffers 4 64k;
06fastcgi_connect_timeout 60;
07fastcgi_send_timeout 180;
08fastcgi_read_timeout 180;
09fastcgi_buffer_size 128k;
10fastcgi_buffers 4 256k;
11fastcgi_busy_buffers_size 256k;
12fastcgi_temp_file_write_size 256k;
13fastcgi_intercept_errors on;