tail -f error.log
就具体错误是 :upstream sent too big header while reading response header from upstream
我们是nginx反向代理,proxy是nginx作为client转发时使用的,如果header过大,超出了默认的1k,就会引发上述的upstream sent too big header (说白了就是nginx把外部请求给后端apache ,apache返回的header 太大nginx处理不过来就导致了。
由于使用的是Nginx连接PHP的fastcgi方式,后来在location ~ \.php$ {...}地方新增了如下配置,重启之后就好了
fastcgi_buffers 8 128k; # fastcgi缓存设置,缓存太小容易发生504错误 fastcgi_buffer_size 128k; # 由 64k 改为 128K; fastcgi_busy_buffers_size 256k; # 由 128K 改为 256K; fastcgi_temp_file_write_size 128k; # 由 128K 改为 256K。 fastcgi_connect_timeout 100s; fastcgi_send_timeout 60s; # nginx进程向fastcgi进程发送request的整个过程的超时时间 fastcgi_read_timeout 60s; # fastcgi进程向nginx进程发送response的整个过程的超时时间
如果不行,修改代理缓存配置,将以下参数增大
# 是否启用Proxy Buffer,默认on 还可以通过HTTP响应头部的"X-Accel-Buffering"头域设置yes或on实现,但nginx配置的proxy_ignore_headers可能导致设置失效 proxy_buffering on; proxy_buffers 8 32k; # 被代理服务器响应数据的Proxy Buffer个数和每个Buffer的大小,nginx从代理的后端服务器获取响应信息放入缓存区 # proxy_buffer_size: nginx接收被代理服务器第一部分响应数据的大小,一般包含HTTP响应头,nginx通过它获取响应数据和被代理服务器的必要信息 proxy_buffer_size 64k; # 缓存大小,默认为4k或8k,一般保持和proxy_buffers的size相同,也可以设置更小 proxy_busy_buffers_size 128k; # 高负荷缓冲区大小(一般proxy_buffers * 2)默认8k或16k