ruby-on-rails - 如何强制 nginx 在 HEAD 请求中包含 Content-Length header

标签 ruby-on-rails linux http nginx

如何配置 nginx 在响应 HTTP HEAD 请求时返回有效的 Content-Length header ?目前我的服务器返回这个:

curl --head http://example.com/myfile.xml
HTTP/1.1 200 OK
Date: Tue, 23 Aug 2016 13:49:46 GMT
Content-Type: text/xml
Set-Cookie: __cfduid=da2daeaa59809916192f7ac0645d3a3e91471960186; expires=Wed, 23-Aug-17 13:49:46 GMT; path=/; domain=.example.com; HttpOnly
Last-Modified: Mon, 22 Aug 2016 16:20:26 GMT
Vary: Accept-Encoding
ETag: W/"57bb264a-5442b26a"
Expires: Thu, 31 Dec 2037 23:55:55 GMT
Cache-Control: max-age=315360000
Access-Control-Allow-Origin: *
Access-Control-Request-Method: *
Cache-Control: public
Server: cloudflare-nginx
CF-RAY: 9dac40-LHR
X-Cache: MISS from Squid
Via: 1.1 Squid (squid/3.2.14)

必须发送Content-Length header 和对HEAD 的响应(如果我不这样做,检查该URL 的服务永远不会看到文件被更改,也不会下载新版本)。如何设置?

最佳答案

我可能是错的,但由于 Rails 的应用程序服务器生成的动态内容的性质,nginx 可能不会显示内容长度。 您可以要求 Rails 在响应 header 中发送它。在 Rails 应用程序的 config/application.rb 中添加以下中间件:

config.middleware.use "Rack::ContentLength"

这应该在响应中返回 content-length header 。

关于ruby-on-rails - 如何强制 nginx 在 HEAD 请求中包含 Content-Length header ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39103178/

相关文章:

linux - header linux/magic.h 和 linux/posion.h 做什么?

ruby-on-rails - Heroku 网站因 Rails 3.2.9 和路由约束而崩溃

ruby-on-rails - 如何在 ElasticSearch for Rails 中为特定字段定义类型

ruby-on-rails - 创建新 Rails 项目时出现 OpenSSL 错误

java - 如何在 Ubuntu 中将默认的 eclipse IDE 更改为新版本的 IDE?

java - linux中如何使用Java ProcessBuilder执行./filename

Java-ws tomcat通过http调用方法?

iphone - 边界如何在多部分发布请求中工作?

http - 使用参数向多个 Nginx 主机发出一个请求

ruby-on-rails - 如何在 Rails 控制台中重新加载模型?