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 错误。代码或服务器问题?的主要内容,如果未能解决你的问题,请参考以下文章
Node.js 和 Docker - Elastic Beanstalk 502 错误网关
phpMyAdmin 502 网关错误 [CentOS7, nginx]