Rails 3.1.1 HTTP 流与 Apache + Passenger
Posted
技术标签:
【中文标题】Rails 3.1.1 HTTP 流与 Apache + Passenger【英文标题】:Rails 3.1.1 HTTP streaming with Apache + Passenger 【发布时间】:2011-12-13 15:10:35 【问题描述】:在关于 HTTP 流的 Railscasts 中,一些评论者确认可以使用 Apache + Passenger 进行 HTTP 流,但奇怪的是我无法通过 Google 找到任何说明。
Rails 文档也没有提供任何说明。各处的所有详细说明均参考 Unicorn。我一定不是唯一一个想通过 Apache 和Passenger 进行http 流式传输的人。请帮忙。
【问题讨论】:
【参考方案1】:HTTP 流更正确地称为Chunked Transfer Encoding。
这些是我所知道的(可能还有更多要求):
Ruby 1.9.x
流需要 Ruby 1.9 的线程特性
兼容的中间件
您拥有的任何中间件都不得修改 HTTP 响应
乘客
passenger_buffer_response 选项必须关闭
客户支持
客户端必须宣传它使用 HTTP 1.1 或发送 TE 请求标头。
我隐约记得在某处读到需要 nginx,但我在任何地方都找不到参考。
希望对你有帮助。
【讨论】:
PassengerBufferResponse 选项在Passenger 3.0.11 modrails.com/documentation/…中成为一个问题【参考方案2】:我昨天刚刚在 Apache 下设置了带有响应流的Passenger,没有遇到任何问题。这是我在 httpd.conf 中的虚拟主机配置:
<VirtualHost *:80>
ServerName www.my.site.com
DocumentRoot /var/rails/myapp/public
<Directory /var/rails/myapp/public>
# This relaxes Apache security settings.
AllowOverride all
# MultiViews must be turned off.
Options -MultiViews
# Enable response streaming
PassengerBufferResponse off
</Directory>
</VirtualHost>
【讨论】:
以上是关于Rails 3.1.1 HTTP 流与 Apache + Passenger的主要内容,如果未能解决你的问题,请参考以下文章