Nginx 用 502 Bad Gateway 覆盖一般的 symfony 错误

Posted

技术标签:

【中文标题】Nginx 用 502 Bad Gateway 覆盖一般的 symfony 错误【英文标题】:Nginx overwrites general symfony errors with 502 Bad Gateway 【发布时间】:2013-07-16 11:59:43 【问题描述】:

当我尝试访问不存在的路由或在 Twig 模板中出错时,我没有得到带有调试信息的 Symfony 错误页面,而是被重定向到默认的 nginx 502 Bad Gateway。

日志显示了一个有趣的行:

013/07/17 16:11:41 [error] 16952#0: *187 upstream sent too big header while reading
response header from upstream, client: 127.0.0.1, server: ftwo.localhost, request: "GET    
/heasd HTTP/1.1", upstream: "fastcgi://127.0.0.1:9000", host: "ftwo.localhost"

有什么想法吗?

【问题讨论】:

你能提供你的nginx日志的相关部分吗? 【参考方案1】:

在 nginx 配置中增加缓冲区大小,然后按照建议 here 重新启动 nginx。

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

在配置的 php 部分进一步增加 fastcgi 缓冲区(位置 ~ .php$)

fastcgi_buffer_size 128k;
fastcgi_buffers 4 256k;
fastcgi_busy_buffers_size 256k;

来自 CodeIgniter 用户 here 的问题的参考答案。

【讨论】:

这实际上解决了这个问题。非常感谢。一个快速的问题:错误页面现在没有正确加载布局?这可能有关系吗? hm 可能是 css/js 问题?你的 firebug/devtools 网络面板说什么? 只是说明重新加载就足够了。 (sudo service nginx reload) - 关于错误页面没有渲染,你在其他地方有问题吗?您是否运行过 assets install 命令? 我想说的是,在 nginx.conf 中设置代理缓冲区以及在 vhost 文件中设置 fastcgi 设置非常重要。 如果您遇到此错误,您的浏览器很可能是 Chrome。 FF 显示错误页面 OK。至少对我来说。所以我想这里的两个答案都是正确的。一种通过增加服务器缓冲区来解决问题,另一种是通过禁用额外的调试功能来解决问题。【参考方案2】:

您也可以尝试在 app/config/config_dev.yml 禁用 ChromePHP

只需注释掉这些行:

chromephp:
    type:   chromephp
    level:  info

这个插件会生成一个大标题并强制 nginx 以 502 Bad Gateway 响应。

更多信息请访问:

https://github.com/symfony/symfony/issues/8413

Enable Debug Component in Symfony 2.3

【讨论】:

以上是关于Nginx 用 502 Bad Gateway 覆盖一般的 symfony 错误的主要内容,如果未能解决你的问题,请参考以下文章

nginx 502 Bad Gateway 错误解决办法

502 bad gateway怎么解决 nginx

带有 Daphne 的 Nginx 给出 502 Bad Gateway

113资讯网——NGINX 502 Bad Gateway——解决方案

nginx java 502 bad gateway问题怎么解决

phpstudy一键安装包 502 bad gateway nginx怎么解决