2

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

这是我的情况。

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

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

希望大家能帮忙!

4

2 回答 2

7

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

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

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

我最终应用了另一个堆栈溢出解决方案的第一位:

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 部分。这是解决方案中缺少的东西。

于 2013-01-30T21:44:50.963 回答
2

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

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

于 2013-01-30T13:26:57.207 回答