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 错误的主要内容,如果未能解决你的问题,请参考以下文章
带有 Daphne 的 Nginx 给出 502 Bad Gateway
113资讯网——NGINX 502 Bad Gateway——解决方案