Nginx错误502 upstream sent too big header while reading response header from upstream

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


赞(52) 打赏
未经允许不得转载:优客志 » 系统运维
分享到:

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏