业务高峰期nginx 很大比例报502bad gateway

业务高峰期部分请求报502错误,
ERROR日志提示 no live upstreams while connecting to upstream,但后端第二层NGINX服务器日志无502,第二层的NGINX没有收到前端NGINX的502错误请求,请问是NGINX配置还是后端服务原因,从哪几个方面去排除?
结构:互联网—> NGINX代理—>第二层NGINX代理->PHP服务

邀请回答
提问于 2020-08-16 00:38
338 次浏览
共4个回答

发表评论
  • 陶辉
    最佳答案
    2020-08-28 17:49

    导致502的一个常见原因,是三次握手建立失败了,你可以用netstat统计下,是否存在报文丢失等情况,如果是的话,报502就是正常的,此时你可以通过Nginx的next upstream机制,在Nginx层通过重新转发请求把502错误化解掉。

    4
    回复
    举报
    • dongchch 2020-11-05 11:31

      陶老师请教一下,现在抓包发现: 出现502的时候 nginx的请求没有往server服务器分发就返回了502,其实这时候后台server是正常的。这

      0
      回复
      举报
    • 陶辉 2020-11-05 16:09

      我没找到怎样对你的回复继续回复的按钮哈。你看下error.log文件中,是否有no live upstream字样的LOG?这是error级别的日志

      0
      回复
      举报
  • 夜雨
    2020-08-28 16:37

    这个之前遇到过是因为nginx upstream的默认监控检查的问题,可以在upstream里加上max_fails=0  fail_timeout=0试试。

    1
    回复
    举报
  • 守望
    2020-08-28 10:00

    1. 502 bad gateway的原因有多种,这是其中一的一种,仅供参考!

    2. 首先查找php-fpm位置:

      1.find / -name php-fpm;

      2.查看listen值;

       

      Nginx+php7 502 Bad Gateway
    3. 打开nginx配置文件,查看fastcgi_pass配置项值;

      fastcgi_pass   127.0.0.1:9000;

      Nginx+php7 502 Bad Gateway
    4. 使用grep查看 php-fpm是否运行;

      1.netstat -ant | grep 9000

      2.结果为空,说明php-fpm未运行;

       

       

      Nginx+php7 502 Bad Gateway
    5. 因此,将nginx配置文件中fastcgi_pass配置项改为 unix:/tmp/php-cgi.sock;

      fastcgi_pass unix:/tmp/php-cgi.sock;

      Nginx+php7 502 Bad Gateway
    6. 保存,并重启nginx;

      /usr/local/nginx/sbin/nginx -s reload

      Nginx+php7 502 Bad Gateway
    7. 再次访问,运行成功!!

       

      Nginx+php7 502 Bad Gateway

    1
    回复
    举报
  • 守望
    2020-08-29 14:58

    看看这篇文章能解决您的问题吗 https://www.nginx-cn.net/article/186

    0
    回复
    举报
提问者

marcyo

暂无个人介绍

  • 0

    文章

  • 0

    粉丝

  • 0

    被赞

您已邀请位用户
版权所有©F5 Networks,Inc.保留所有权利。京ICP备16013763号-5