【问题标题】:nginx strips last-modified and if-modified-since headers but my rails app needs themnginx 去除了 last-modified 和 if-modified-since 标头,但我的 rails 应用程序需要它们
【发布时间】:2012-05-24 13:07:48
【问题描述】:

我的 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(提供正确的标头值)都不会传递给 unicorn(因此 Rails 应用程序),Last-Modified 也不会传播到客户端:请求是无条件生成的,响应永远不会包含正确的标题。

【问题讨论】:

  • 也许这条指令可以解决问题:ignore_invalid_headers off; (我知道你的标题不是无效的......)

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


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 2012-11-01
    • 2011-07-02
    • 2020-08-04
    • 1970-01-01
    • 2012-10-01
    • 2016-12-10
    • 2016-04-02
    • 2011-10-03
    • 2019-09-21
    相关资源
    最近更新 更多