簡體   English   中英

使用Nginx作為反向代理時無法緩存靜態文件

[英]Caching static files isn't working when using nginx as a reverse proxy

我在nginx后面運行了ExpressJS應用程序,並將其設置為反向代理。 我還為圖像,js和css等靜態文件設置了一些緩存。 問題是,它們似乎並沒有真正在緩存。 對這些文件的請求始終返回200狀態代碼,而不是304。如果我檢查開發工具中的標頭,則Expires標頭永遠不會與上次請求文件時的標頭相同。 它始終會重置為新值。 我的配置中缺少什么嗎?

我正在使用nginx 1.4.4。

謝謝。

upstream stats {
  ip_hash;
  server localhost:3000;
}

server {
  server_name app.example.com;

  access_log /var/log/nginx/stats.access.log;
  error_log /var/log/nginx/stats.error.log debug;

  root /srv/www/stats/public;

  location / {
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarder-For $proxy_add_x_forwarded_for;
    proxy_set_header Host $http_host;
    proxy_set_header X-NginX-Proxy true;
    proxy_pass http://stats;
    proxy_redirect off;
  }

  location ~* .(ico|css|js|gif|jpg|png)$ {
    expires 7d;
    log_not_found off;
  }
}

您在標頭中看到的到期時間隨每個請求而變化是正常的,因為,正如doc所說

“ Expires”字段中的時間計算為當前時間與指令中指定的時間之和。

(添加了強調。)當前時間是請求的時間。 由於當前時間隨每個請求而變化,因此到期時間也隨之變化。 如果您要使用的是文件的最后修改時間,那么您將使用expires modified 7d

現在,通過將到期日期設置為未來的7天,可以告訴瀏覽器不要再在到期前再次檢查。 當瀏覽器在7天內再次檢查時,您將獲得304。 如果希望瀏覽器始終檢查何時嘗試再次加載資源,則set expires 0

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM