nginx 条带上次修改和如果修改以来的标头,但我的 Rails 应用程序需要它们



My 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传播到客户端:请求是无条件生成的,响应永远不会包含正确的标头。

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

最新更新