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的主要内容,如果未能解决你的问题,请参考以下文章

HTTP/2 流与 HTTP/1.1 连接

akka http:Akka 流与演员建立休息服务

java http post 同时发送文件流与数据

HTTP流与Java jersey客户端异常丢弃

ts流与rtsp流的区别是啥?

第五课:流与其他