解决Nginx502badgateway错误实例
作者:陈俊铭冠萍育维 | 来源:互联网 | 2014-05-28 09:40
我们在使用nginx的时候有不少问题出现,首先我们就来解决下nginx502错误的问题经过分析将nginx的errorlog打开,发现”pstreamsenttoobigheaderwhilereadingresponseheaderfromupstream”这样的错误提示,查阅了一下资料,大意是nginx缓冲区有一个
我们在使用
nginx的时候有不少问题出现,首先我们就来解决下
nginx 502错误的问题
经 过分析将nginx的error log打开,发现”pstream 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, client: 116.22.131.154, server: www.server110.com, request: "GET
/ysmp/index.php?did=124994 HTTP/1.0", upstream:
"http://127.0.0.1:8080/ysmp/index.php?did=124994", host:
"www.server110.com"
后来原来那错误没了出了新错误了 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;