Nginx 502 Bad Gateway 错误的原因及解决方法
2017-06-29 09:35
573 查看
Nginx 502 Bad Gateway 的错误已经遇到好几次了,这里做一下记录,备忘哈哈。
![](http://lxy.me/wp-content/uploads/2013/03/nginx502badgataway.png)
会有好多种情况出现502错误,下面我们分情况来说一下。
一、fastcgi缓冲区设置过小
出现错误,首先要查找nginx的日志文件,目录为/var/log/nginx,在日志中发现了如下错误。
2013/01/17 13:33:47 [error] 15421#0: *16 upstream sent too big header while reading response header from upstream
查阅了一下资料,大意是nginx缓冲区有一个bug造成的,我们网站的页面消耗占用缓冲区可能过大。
网上查找了一下解决方法,在国外网站看到了一个增加缓冲区的方法,彻底解决了Nginx 502 Bad Gateway的问题。方法如下:
请根据服务器已经网站的情况自行增大上述两个配置项。
二、代理缓冲区设置过小
如果你使用的是nginx反向代理,如果header过大,超出了默认的1k,就会引发上述的upstream sent too big header (说白了就是nginx把外部请求给后端处理,后端返回的header太大,nginx处理不过来就会导致502。
三、默认php-cgi的进程数设置过少
在安装好使用过程中出现502问题,一般是因为默认php-cgi进程是5个,可能因为phpcgi进程不够用而造成502,需要修改/usr/local/php/etc/php-fpm.conf 将其中的max_children值适当增加。也有可能是max_requests值不够用。需要说明的是这连个配置项占用内存很大,请根据服务器配置进行设置。否则可能起到反效果。
四、php执行超时
php执行超时,修改/usr/local/php/etc/php.ini 将max_execution_time 改为300
五、nginx等待时间超时
部分PHP程序的执行时间超过了Nginx的等待时间,可以适当增加nginx.conf配置文件中FastCGI的timeout时间
![](http://lxy.me/wp-content/uploads/2013/03/nginx502badgataway.png)
会有好多种情况出现502错误,下面我们分情况来说一下。
一、fastcgi缓冲区设置过小
出现错误,首先要查找nginx的日志文件,目录为/var/log/nginx,在日志中发现了如下错误。
2013/01/17 13:33:47 [error] 15421#0: *16 upstream sent too big header while reading response header from upstream
查阅了一下资料,大意是nginx缓冲区有一个bug造成的,我们网站的页面消耗占用缓冲区可能过大。
网上查找了一下解决方法,在国外网站看到了一个增加缓冲区的方法,彻底解决了Nginx 502 Bad Gateway的问题。方法如下:
1 2 3 4 5 6 | http { ... fastcgi_buffers 8 16k; fastcgi_buffer_size 32k; ... } |
二、代理缓冲区设置过小
如果你使用的是nginx反向代理,如果header过大,超出了默认的1k,就会引发上述的upstream sent too big header (说白了就是nginx把外部请求给后端处理,后端返回的header太大,nginx处理不过来就会导致502。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | server { listen 80; server_name *.lxy.me; location / { ###############添加这3行 proxy_buffer_size 64k; proxy_buffers 32 32k; proxy_busy_buffers_size 128k; ###############添加这3行 proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; ............ } |
在安装好使用过程中出现502问题,一般是因为默认php-cgi进程是5个,可能因为phpcgi进程不够用而造成502,需要修改/usr/local/php/etc/php-fpm.conf 将其中的max_children值适当增加。也有可能是max_requests值不够用。需要说明的是这连个配置项占用内存很大,请根据服务器配置进行设置。否则可能起到反效果。
四、php执行超时
php执行超时,修改/usr/local/php/etc/php.ini 将max_execution_time 改为300
五、nginx等待时间超时
部分PHP程序的执行时间超过了Nginx的等待时间,可以适当增加nginx.conf配置文件中FastCGI的timeout时间
1 2 3 4 5 6 | http { fastcgi_connect_timeout 300; fastcgi_send_timeout 300; fastcgi_read_timeout 300; ...... } |
相关文章推荐
- nginx 下 thinkphp 502 bad Gateway + "LNMP一键安装包的Nginx 502 Bad Gateway错误可能原因及解决方法"
- Nginx 502 Bad Gateway 错误的原因及解决方法
- Nginx 502 Bad Gateway 错误的原因及解决方法
- Nginx 502 Bad Gateway 错误的原因及解决方法
- Nginx 502 Bad Gateway 错误的原因及解决方法
- LNMP一键安装包的Nginx 502 Bad Gateway错误可能原因及解决方法
- Nginx 502 Bad Gateway错误常见的4种原因和解决方法
- LNMP一键安装包的Nginx 502 Bad Gateway错误可能原因及解决方法
- Nginx 502 Bad Gateway错误的原因分析与解决方法
- Nginx 502 Bad Gateway 错误的原因及解决方法
- 深入探讨:Nginx 502 Bad Gateway错误的解决方法
- 深入探讨:Nginx 502 Bad Gateway错误的解决方法
- 深入探讨:Nginx 502 Bad Gateway错误的解决方法
- 深入探讨:Nginx 502 Bad Gateway错误的解决方法
- Nginx 502 bad gateway和Nginx 504 Gateway Time-out错误解决方法 错误解决办法
- (总结)Nginx 502 Bad Gateway错误触发条件与解决方法
- nginx报502 bad GateWay错误的解决方法
- (总结)Nginx 502 Bad Gateway错误触发条件与解决方法
- nginx加php-fpm报502 bad gateway错误五种解决方法
- nginx加php-fpm出现502 bad gateway错误的5种解决方法