【发布时间】:2009-10-03 19:15:03
【问题描述】:
我们正在使用 php-fastcgi 在 Nginx 上运行 Drupal 5.x。 有一段时间一切都很好。突然之间,我们(用户)遇到了 502 Bad Gateway 错误。 重启 PHP-cgi、nginx.. 重启机器等没有帮助。
还有其他人遇到过此类问题吗?可能的嫌疑人有哪些?
【问题讨论】:
-
扩展 php-fastcgi pm.max_children 大小的计数
我们正在使用 php-fastcgi 在 Nginx 上运行 Drupal 5.x。 有一段时间一切都很好。突然之间,我们(用户)遇到了 502 Bad Gateway 错误。 重启 PHP-cgi、nginx.. 重启机器等没有帮助。
还有其他人遇到过此类问题吗?可能的嫌疑人有哪些?
【问题讨论】:
今天我在一个 CI 项目中遇到“502 Bad Gateway”,经过深入研究后发现是 nginx fastcgi 缓冲区的问题,以下是解决方法: 打开/etc/nginx/nginx.conf
将以下行添加到 http 部分:
fastcgi_buffers 8 16k;
fastcgi_buffer_size 32k;
【讨论】:
502 错误通常是在 PHP 因某种原因而崩溃时引起的。您应该做的第一件事是检查所有日志文件。这包括 /var/log/ 中的系统内容和 nginx 日志。
如果您最近没有进行任何更改并且问题只是无缘无故地开始发生,则 PHP 可能内存不足。我知道当它作为 Apache 模块发生时,它会给出一个空白屏幕——如果在 nginx 和 FastCGI 接口下发生 502 错误,我不会感到惊讶。这很容易解决,只需将 ini_set('memory_limit', '256M') 放入您的 index.php 中,看看是否能解决问题。
另外,您能否加载不涉及 Drupal 的独立 PHP 文件?把 到一个名为 info.php 的文件中,然后尝试点击它,看看会发生什么。
祝你好运!
【讨论】:
我也遇到了这个错误,我最终禁用了所有模块(非核心)并一一启用它们以查看导致错误的原因。
这是disable all non-core modules 的简单方法。
【讨论】:
如果问题刚刚开始.. 阅读以上内容.. 如果服务器是刚刚设置的新服务器,请尝试此命令以查看它是否正在侦听它的端口
netstat -lpn | grep ":9000"
如果您当然可以设置 fast-cgi 以在不同的端口上工作,那么只需将该语句中的端口 9000 替换为您正在寻找的端口。如果没有继续显示,可能没有任何东西在监听在那个端口上,你需要先解决这个问题。
【讨论】:
如果你有 firePHP 禁用它。 nginx 与 php 通信时,大标题会导致问题
【讨论】:
通常当我遇到这种情况时,它是 PHP 某处的致命错误。查看您的 PHP-cgi 日志,看看它是否在其中。 nginx 日志中应该有这样的内容:104: Connection reset by peer。根据您的设置,(抱歉,链接失效) 可能会有所帮助,但如果您使用的是 php-fpm,则不会。
【讨论】:
增加你的内存限制,它将被修复。 ini_set('memory_limit', '256M');
【讨论】:
这是因为您可能已升级到 PHP 5.5,因此您现在正在使用您可能已启用两次的操作码缓存。即检查 php.ini 和 opcache.ini。
【讨论】: