Nginx 502 Bad Gateway错误原因及解决方案

Nginx 502 Bad Gateway错误原因及解决方案

本文主要介绍Nginx 502坏网关错误的原因和解决方法,并通过实例代码进行了详细介绍。对大家的学习或者工作都有一定的参考价值,有需要的朋友可以参考一下。

NGX502坏网关的错误已经遇到好几次了。这里有记录,备忘录哈哈。

出现502错误的情况有很多种。我们分不同的情况来说一下。

一、fastcgi缓冲区设置过小

如果出现错误,首先查找nginx的日志文件,目录为/var/log/nginx,在日志中发现如下错误。

2013/01/17 13:33:47[错误] 15421#0: *16从上游读取响应标头时,上游发送了太大的标头

查阅资料后,大意是nginx缓冲区出现了bug,我们网站的页面消耗可能占用了过多的缓冲区。

我在网上查了解决方案,在国外网站看到一个增加缓冲的方法,彻底解决了Nginx 502坏网关的问题。该方法如下:

http {

.

fastcgi _ buffers 8 16k

fastcgi _ buffer _ size 32k

.

}

请根据服务器网站增加以上两项配置。

二、代理缓冲区设置过小

如果是使用nginx反向代理,如果头太大,超过默认的1k,就会触发上面提到的上游发送的太大的头(说白了,nginx把外部请求发送到后端处理,后端返回的头太大,所以nginx处理不了,就会造成502。

服务器{

听80;

server _ name * . lxy . me;

位置/{

# # # # # # # # #把这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;

..

}

三、默认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的超时时间。

http {

fastcgi _ connect _ timeout 300

fastcgi _ send _ timeout 300

fastcgi _ read _ timeout 300

.

}

这就是本文的全部内容。希望对大家的学习有帮助,支持我们。

Nginx 502 Bad Gateway错误原因及解决方案