• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    Nginx 502 Bad Gateway错误原因及解决方案

    Nginx 502 Bad Gateway 的错误已经遇到好几次了,这里做一下记录,备忘哈哈。


    会有好多种情况出现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的问题。方法如下:

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

    请根据服务器已经网站的情况自行增大上述两个配置项。

    二、代理缓冲区设置过小

    如果你使用的是nginx反向代理,如果header过大,超出了默认的1k,就会引发上述的upstream sent too big header (说白了就是nginx把外部请求给后端处理,后端返回的header太大,nginx处理不过来就会导致502。

    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;
    ............
    }

    三、默认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 {
     fastcgi_connect_timeout 300;
     fastcgi_send_timeout 300;
     fastcgi_read_timeout 300;
     .....
     }
    

    以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

    上一篇:基于postman实现http接口测试过程解析
    下一篇:Nginx访问日志及错误日志参数说明
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

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