2016-08-24 30 views
0

我在使用Nginx1.4.6時意識到必須設置gzip off;才能夠使用php設置ETag標頭。
閱讀之後this post 我用廚師升級到了Nginx 1.10.1。我加入了資源庫的APT食譜與無法在nginx上設置etag標頭

apt_repository 'nginx-php' do 
    uri   'ppa:nginx/stable' 
    distribution node['lsb']['codename'] 
end 

然後用nginx的升級:

package 'nginx' do 
    action :upgrade 
end 

但是,一切都似乎是相同的,與舊版本nginx的。
僅當我明確設置gzip off;時,纔可以設置ETag標頭。

另外我沒有在我的nginx.conf文件中看到etag on;指令,並且手動設置它沒有任何影響。

這可能是我只需要再做一次vagrant destroyvagrant provision--但我想我在這裏錯過了一些東西。

UPDATE:
我現在再次detroying該機還刪除.vagrant文件夾後工作。但我不確定這是否是問題所在。 現在我可以設置ETag標題,並且請求包含If-None-Match標題。但是我的Etags會被轉換成弱Etags,而nginx會在散列之前加上W/。這是默認行爲嗎?以及如何設置強大的Etags?

更新:
好吧,因爲gzip上; etag很弱...有沒有辦法設置強啓用gzip的etag?

+0

您是否看到nginx可執行文件實際上按預期升級?如果是這樣,請刪除「廚師」標籤,因爲這與廚師無關。 – coderanger

+0

嗯,它必須 - 當我做'nginx -v'時,它告訴我'nginx版本:nginx/1.10.1'。 我也摧毀了vmbox,並且再次設置它來確保沒有舊nginx版本的殘留 - 但仍然是同樣的問題。 – FitzPatrick

+1

嘗試殺死所有陳舊的工人,重新裝入後,他們可能仍然留戀一段時間,由於keepalives/websockets – Vasfed

回答

0

回答我自己的問題。

甲強的Etag(用PHP)是利用

ob_start('ob_gzhandler')

當報頭被髮送之前設置。