2014-01-17 17:37:02
来 源
kejihao
Nginx
本文介绍解决Nginx的502badgateway错误实例,希望对于初学Nginx服务器相关的朋友有帮助,更多Nginx安装、配置、报错处理等资源请本站内搜索。。

现象:web网站配置负载均衡,使用nginx,有些页面可以,但是登陆后报502 bad gateway

原因:登陆后会有向客户端写cookie的操作导致header比普通访问要大

(可以根据nginx错误日志/usr/local/nginx/logs中upstream sent too big header while reading response header from upstream确定)

解决方案:

这是由于nginx缓冲区有一个bug造成的,我们网站的页面消耗占用缓冲区可能过大,我们是nginx反向代理

proxy是nginx作为client转发时使用的,如果header过大,超出了默认的1k,就会引发上述的upstream sent too big header (说白了就是nginx把外部请求给后端apache ,apache返回的header 太大nginx处理不过来就导致了。

server {

 listen 80;

 server_name www.server110.com ;

large_client_header_buffers 4 16k;

#charset koi8-r;

# access_log off;

location / {

#添加这3行 ,

 proxy_buffer_size 64k;

 proxy_buffers 32 32k;

 proxy_busy_buffers_size 128k;

proxy_set_header Host $host;

 proxy_set_header X-Real-IP $remote_addr;

 proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

set $baiduspider '';

if ( $http_user_agent ~ Baiduspider) {

 set $baiduspider Baidu;

 }

............

如果是 nginx+PHPcgi 就该

fastcgi_connect_timeout 60;

fastcgi_send_timeout 180;

fastcgi_read_timeout 180;

fastcgi_buffer_size 128k;

fastcgi_buffers 4 256k;

fastcgi_busy_buffers_size 256k;

fastcgi_temp_file_write_size 256k;

fastcgi_intercept_errors on

011/01/07 11:12:57 [error] 10770#0: *38585340 upstream timed out (110: Connection timed out) while reading response header from upstream, 

后来原来那错误没了出了新错误了 upstream timed out 超时?

server {

 listen 80;

 server_name www.server110.com ;

 large_client_header_buffers 4 16k;

 client_max_body_size 300m;

 client_body_buffer_size 128k;

 proxy_connect_timeout 600;

 proxy_read_timeout 600;

 proxy_send_timeout 600;

 proxy_buffer_size 64k;

 proxy_buffers 4 32k;

 proxy_busy_buffers_size 64k;

 proxy_temp_file_write_size 64k;

 #charset koi8-r;

 # access_log off;

声明: 此文观点不代表本站立场;转载须要保留原文链接;版权疑问请联系我们。