2017-04-05 145 views
2

我想通過使用自定義標頭來實現我的腳本中的自定義nginx緩存控制方法:「Do-Cache」。Nginx緩存繞過自定義響應標頭

map $sent_http_do_cache $nocache { 
     public 0; 
     default 1; 
} 

而在Nginx的服務器塊: 我在Nginx的HTTP模塊使用

fastcgi_cache_bypass $nocache; 
fastcgi_no_cache $nocache; 

因此,對於Do-Cache: public,nginx的應緩存響應。否則不是。

但是這種配置不起作用。通過調試成日誌,$sent_http_do_cache$nocache的值是正確的,直到它們用於nginx的服務器塊。如果在服務器塊(fastcgi_cache_bypass $nocache或簡單的set $a $nocache)中使用它們,則$nocache變量獲得「1」值,$sent_http_do_cache - 「 - 」。

是否有任何其他方式來管理基於自定義標頭的nginx緩存?

回答

0

基於響應頭的緩存不能完成,因爲它意味着Nginx必須將請求代理回到後端並檢查其響應,從而破壞代理緩存的目的。