开发者社区> 问答> 正文

502badgateway如何修复

重启服务器后发现Nginx在我的WordPress报502 Bad Gateway错误,如何修复?

展开
收起
programmer 2014-07-23 12:07:57 12396 0
5 条回答
写回答
取消 提交回答
  • Re502badgateway如何修复
    环境推倒重来吧
    2014-07-30 11:18:01
    赞同 展开评论 打赏
  • 以上方法都不行的话,建议您重装系统,安装lnamp环境。
    用apache跑php比较推荐!
    2014-07-23 15:16:31
    赞同 展开评论 打赏
  • nginx 502错误的原因比较多,是因为在代理模式下后端服务器出现问题引起的。这些错误一般都不是nginx本身的问题,一定要从后端找原因!但nginx把这些出错都揽在自己身上了,着实让nginx的推广者备受置疑,毕竟从字眼上理解,bad gateway?不就是bad nginx吗?让不了解的人看到,会直接把责任推在nginx身上,希望nginx下一个版本会把出错提示写稍微友好一些,至少不会是现在简单的一句502 Bad Gateway,另外还不忘附上自己的大名。

    502错误最通常的出现情况就是后端主机当机,当然还有。在upstream配置里有这么一项配置:proxy_next_upstream,这个配置指定了nginx在从一个后端主机取数据遇到何种错误时会转到下一个后端主机,里头写上的就是会出现502的所有情况拉,默认是error timeout,error就是当机、断线之类的,timeout就是读取堵塞超时,比较容易理解。我一般是全写上的:

    proxy_next_upstream error timeout invalid_header http_500 http_503;

    不过现在可能我要去掉http_500这一项了,http_500指定后端返回500错误时会转一个主机,后端的jsp出错的话,本来会打印一堆stacktrace的错误信息,现在被502取代了。但公司的程序员可不这么认为,他们认定是nginx出现了错误,我实在没空跟他们解释502的原理了……

    invalid_header我也没认真查清到底指的什么,我也很想先把它弄下来。

    503错误就可以保留,因为后端通常是apache resin,如果apache死机就是error,但resin死机,仅仅是503,所以还是有必要保留的。

    对nginx fastcgi使用的情况,我现在用得不多,不熟就不乱说了
    2014-07-23 13:59:47
    赞同 展开评论 打赏
  • Re502badgateway如何修复
    昨天装上nginx后在高负载的时候,论坛上传图片或者执行较长时间脚本的时候就不停的出现502 Bad Gateway ,网上搜了,大多数都是这篇解决方案,网上的解决方案是

    http
    {
    ……
    fastcgi_connect_timeout 300;
    fastcgi_send_timeout 300;
    fastcgi_read_timeout 300;
    ……
    }

    增加了fastcgi的相应请求时间。但是我在实际中碰到了这个问题,设置到500,还是会出现,只是比我设置120的时候要少一些。后来发现主要是在一些post或者数据库操作的时候出现这种情况,静态页面是不会出现的。

    反复的查问题,调试,也加大了CGI的进程数。

    128

    256再加上去可能会变得很慢。占用内存大了。

    在php-fpm.conf设置中还有一项,可能当时没注意到,无意中改了这个值。

    request_terminate_timeout

    这个值是max_execution_time,就是fast-cgi的执行脚本时间。

    0s

    0s为关闭,就是无限执行下去。(当时装的时候没仔细看就改了一个数字)

    发现,问题解决了,执行很长时间也不会出错了。

    优化fastcgi中,还可以改改这个值5s 。看看效果

    终于发现502的错误其实不是nginx的问题,哈哈
    事实证明 php-cgi进程数不够用、php执行时间长、或者是php-cgi进程死掉,都会出现502错误
    2014-07-23 13:54:25
    赞同 展开评论 打赏
  • Re502badgateway如何修复
    我以前也遇到过报502 Bad Gateway错误,查了好久,以为是nginx.conf或者php-fpm.conf的错,突然想起来,好像哪里看到说php.ini中memory_limit设低了会出错,
    修改了php.ini的memory_limit为64M,重启nginx,发现真好了~
    原来是PHP的内存不足了。

    ------------------------------------------------------------------------------------------

    nginx+php 502 bad gateway解决方法

    打开 /usr/local/php/etc/php-fpm.conf

          调大以下两个参数(根据服务器实际情况,过大也不行)

        <value name=”max_children”>5120</value>

          <value name=”max_requests”>600</value>

    修改后速度快了,好象mysql占用cpu也下降了
    2014-07-23 12:13:58
    赞同 展开评论 打赏
问答分类:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载