如何强制nginx在HEAD请求中包含Content-Length标头

时间:2016-08-23 13:54:03

标签: ruby-on-rails linux http nginx

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

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标头以及对HEAD的回复(如果我不这样做,检查该网址的服务永远不会看到该文件已更改,不会下载新版本)。你是如何设置它的?

1 个答案:

答案 0 :(得分:2)

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

config.middleware.use "Rack::ContentLength"

这应该返回content-length标题作为回应。