nginx 502 bad gateway错误原因及解决方法

[复制链接] |主动推送
查看46 | 回复0 | 2024-9-11 18:33:51 | 显示全部楼层 |阅读模式
很多情况下会出现502错误。让我们逐案讨论。


一、fastcgi缓冲区设置太小


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


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


查看信息,大意是nginx缓冲区有bug。我们网站的页面消耗可能会占用过多的缓冲区。


在网上找到了解决办法,在国外网站上看到了增加缓冲区的方法,彻底解决了nginx 502 bad gateway的问题。方法如下:




http {
...
fastcgi_buffers 8 16k;
fastcgi_buffer_size 32k;
...
}



请根据服务器有网站的情况增加以上两个配置项。


二、代理缓冲区设置太小


如果使用nginx反向代理,如果header过大超过默认的1K,就会触发上面提到的upstream send too big header(说白了就是nginx会将外部请求发送到后端处理。如果后端返回的header过大,nginx会处理失败,导致502。




服务器{
   听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;
......
}



三、默认PHP CGI设置的进程太少


在安装和使用过程中出现502问题。通常,默认有五个 PHP CGI 进程。可能是phpcgi进程不足造成的。需要修改/usr/local/PHP/etc/PHP FPM Conf设置Max_children值适当增加。它也可能是 max_Insufficient 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;
.....
}




以上就是本文的全部内容。希望对你的学习有所帮助。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则