2016-08-23 776 views
0

如何配置nginx在響應HTTP HEAD請求時返回有效的Content-Length標頭?目前我的服務器返回此:如何強制nginx在HEAD請求中包含Content-Length標頭

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) 

必須與響應HEAD發送Content-Length頭(如果我不這樣做,那將檢查URL將永遠不會看到該文件被更改,並且該服務將不下載新版本)。你如何設置它?

+0

你可以發佈你的ngnix配置嗎?我所有使用nginx的服務器(具有非常基本的配置)都會返回HEAD請求中的內容長度。 –

回答

1

我可能是錯的,但由於Rails應用服務器生成的動態內容的性質,nginx可能沒有顯示內容長度。 您可以要求Rails發送迴應標題。在Rails應用程序的config/application.rb添加以下的中間件:

config.middleware.use "Rack::ContentLength" 

這應該響應返回content-length頭。

+0

謝謝......雖然當nginx直接在文件本身提供文件時,Rails請求週期之外呢?該文件是在rake任務中離線生成的。 – Avishai

+0

在這種情況下,我總是在我的HEAD請求中獲取內容長度標題。我要求公共圖像(由nginx而不是由rails提供)'curl --head http:// myserver.com/images/image.png'。 – kiddorails

相關問題