2013-09-01 61 views
0

我有nginx/1.4.2 + Apache,我想用nginx緩存所有的請求。這個位置規則.PHP創建緩存文件,但不適合的.html:爲什麼nginx不會緩存帶.html擴展名的腳本?

location ~* \.(html|php)$ { 
      proxy_pass http://127.0.0.1:8080; 
      proxy_set_header Host my-host-name.com; 
      proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 
      proxy_set_header X-Real-IP $remote_addr; 

      add_header cache "html"; 

      proxy_cache default; 
      proxy_cache_min_uses 1; 
      proxy_cache_valid 1d; 
      proxy_cache_key "$host|$request_uri"; 
      proxy_hide_header "Set-Cookie"; 
      proxy_ignore_headers "Cache-Control" "Expires"; 
    } 

頭「高速緩存」加入到反應,所以位置工作。

我試圖用「位置/」 - 請求腳本存儲在緩存PHP擴展(且無任何)。對於帶有.html擴展名的腳本,nginx不會創建緩存。

我無法找到nginx忽略帶.html擴展名的腳本的原因。將腳本重命名爲.php - 這不是方法。我有CMS,並且它爲使用.html的網頁製作可讀的URL,Google索引中有數千頁,現在重命名會導致網站重新索引。

回答

0

可能是因爲您的CMS返回Set-Cookie頭。

+0

是的!因爲在配置我有: proxy_hide_header「Set-Cookie」; 所以,在nginx之後,我們看不到「Set-Cookie」頭是否存在。如果CMS嘗試發送cookie,nginx將禁用緩存 –

相關問題