502 网关和 codeigniter/nginx/apache 错误。代码或服务器问题?

Posted

技术标签:

【中文标题】502 网关和 codeigniter/nginx/apache 错误。代码或服务器问题?【英文标题】:502 bad gateway and codeigniter/nginx/apache. Code or server issue? 【发布时间】:2013-01-13 23:30:38 【问题描述】:

我的 codeigniter 应用程序正在针对 502 bad gateway 错误运行。我知道这个主题还有其他线程,但我不是服务器向导,症状不同,我的服务器配置也略有不同,或者我认为。

这是我的情况。

该应用程序运行良好,直到我第 n 次发布表单(n 介于 2 到 n 次之间)。这第n次与之前的帖子完全相同。我只是更改一个字段,然后按提交按钮。 表单使用验证类,我自定义了错误消息设置器,使这些消息在会话中也设置为 flashdata(我希望消息在重定向后可用)。 我的服务器使用 nginx 和 apache(Plesk,apache 服务守护进程称为 httpd)。如果我执行“service httpd stop”或“service nginx stop”,我所有的网站都会立即停止工作。 错误日志中没有错误。

我的问题是:这可能是一个编码问题,还是最肯定(或最有可能)服务器配置错误?如果是后者,当然欢迎所有建议,但请记住这是一个 plesk/apache/nginx 环境。

希望大家帮忙!

【问题讨论】:

【参考方案1】:

我知道出了什么问题。首先,有更多服务器知识的同事向我解释说,我的设置可能是 nginx 接收所有请求,然后直接提供静态文件。对于非静态请求,它将工作传递给 apache,并充当中介。因此,当 apache 尝试向 nginx 发送数据(或 nginx 尝试向 apache 发送信息)时,可能出现问题。

由于我以前从未使用过 nginx,所以我也没有想到检查 nginx 日志文件。还有一个我可以使用的错误:

[error] 27453#0: *9223 上游从上游读取响应头时发送的头太大,客户端:

我最终应用了另一个stack overflow solution 的第一个位:

Add this to your nginx.conf file normally located at
/etc/nginx/nginx.conf:

proxy_buffer_size   128k; 
proxy_buffers   4 256k;
proxy_busy_buffers_size   256k;

顺便说一下,它应该被添加到文件的 http 部分。这是解决方案中缺少的东西。

【讨论】:

【参考方案2】:

我建议在失败后立即检查 Apache 服务器状态 (service httpd status)。没有太多细节可以更好地判断,但可能的情况之一是 Apache 在第 N 个请求上失败,因此 Nginx 无法将请求转发给 Apache 并向您返回“502 Bad Gateway”。

Apache 故障可能是程序问题和错误配置问题。即第 N 个请求占用了太多 RAM(我的理解是您在请求之间保留了一些日期),然后被虚拟化引擎杀死(如果您有 VPS 而不是专用硬件服务器)。到目前为止只是一个假设,但我以前经历过这样的案例。

【讨论】:

以上是关于502 网关和 codeigniter/nginx/apache 错误。代码或服务器问题?的主要内容,如果未能解决你的问题,请参考以下文章

PHP-FPM 和 Nginx:502 错误网关

Node.js 和 Docker - Elastic Beanstalk 502 错误网关

nginx + gunicorn 502 网关错误

phpMyAdmin 502 网关错误 [CentOS7, nginx]

高负载下的 502 网关错误 (nginx/php-fpm)

条纹:502(坏网关)