nginx剥离最后修改和if-modified-since标头,但我的rails应用程序需要它们

时间:2012-05-24 13:07:49

标签: ruby-on-rails nginx http-headers unicorn

我的Rails 3.2应用程序使用 - 通过请求中的#stale? - If-Modified-Since HTTP标头和响应中的Last-Modified标头来决定是否应该动态生成一些数据。这在开发中非常有效(无论是使用webrick还是unicorn_rails),因为curl -D headers.txt表示如果提供了正确的If-Modified-Since值,则会发送304响应,而另外发送Last-Modified标头请求数据。

不幸的是,一旦部署在nginx后面,If-Modified-Since(提供正确的标头值)都不会传递给独角兽 - 因此Rails应用程序 - 也不会Last-Modified传播到客户端:请求无条件生成并且响应永远不会包含正确的标题。

1 个答案:

答案 0 :(得分:1)

事实证明,nginx实际上并没有剥离任何东西。仪表显示控制器已收到If-Modified-Since。 Rails #stale?收到包含错误结果的请求,导致nil参数,以静默方式吞下它,随后忽略与If-Modified-Since的比较并将Last-Modified定位到nil }。