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