我刚刚遇到一个问题,response.headers['Content-Length']
在 Rails 3.2.2 应用程序中设置会导致 Nginx 抛出“502 Bad Gateway”错误。
我在控制器中有一个动作,它使用该send_data
方法发送包含在变量中的原始 JPEG 数据。之前,我遇到了一些浏览器没有下载正在发送的整个图像的问题,并且发现没有发送 Content-Length 标头,因此我决定使用.bytesize
包含 JPEG 数据的变量的属性作为 Content-Length。
这在开发中运行良好(使用 Unicorn),现在有一个 Content-Length 标头,以前没有,但是在我使用 Nginx 和Passenger 的生产中,我得到了前面提到的 502 Bad Gateway。此外,在 Nginx 错误日志中,我看到:
[error] 30574#0: *1686 upstream prematurely closed connection while reading response header from upstream
Rails 生产日志中没有匹配的条目,这告诉我应用程序很好。
我已经注释掉了我设置 Content-Length 标头的行,问题就消失了。我仍在测试我是否真的需要发送 Content-Length 标头,但与此同时,我想我可能会出于好奇而发布此消息,看看是否有人有任何想法。