溫馨提示×

Ubuntu Nginx緩存策略有哪些

小樊
45
2025-08-02 01:06:30
欄目: 智能運維

在Ubuntu上配置Nginx緩存策略可以顯著提高網站性能。以下是一些基本的緩存配置步驟和策略:

基本緩存配置

  1. 安裝Nginx和相關模塊: 確保你已經安裝了Nginx以及必要的模塊。你可以使用以下命令來安裝Nginx:

    sudo apt update
    sudo apt install nginx
    
  2. 配置緩存目錄: 在Nginx配置文件中,你需要指定一個目錄來存儲緩存文件。通常,這個目錄位于 /var/cache/nginx。你可以使用以下命令來創建這個目錄(如果它不存在的話):

    sudo mkdir -p /var/cache/nginx
    sudo chown -R www-data:www-data /var/cache/nginx
    
  3. 編輯Nginx配置文件: 打開Nginx的主配置文件,通常位于 /etc/nginx/nginx.conf,或者你可以在 sites-available 目錄下的特定虛擬主機配置文件中進行設置。例如:

    sudo nano /etc/nginx/sites-available/default
    
  4. 添加緩存配置: 在 server 塊中,你可以添加以下配置來啟用緩存:

    http {
        # 緩存路徑
        proxy_cache_path /var/cache/nginx levels=1:2 keys_zone=my_cache:10m max_size=1g inactive=60m use_temp_path=off;
    
        server {
            listen 80;
            server_name example.com;
    
            location / {
                proxy_pass http://backend;
                proxy_cache my_cache;
                proxy_cache_valid 200 302 10m;
                proxy_cache_valid 404 1m;
                add_header X-Proxy-Cache $upstream_cache_status;
            }
        }
    
        upstream backend {
            server unix:/var/run/php/php7.4-fpm.sock; # 根據你的PHP版本調整
            # 或者使用IP地址和端口
            # server 127.0.0.1:9000;
        }
    }
    

    在這個配置中:

    • proxy_cache_path 指令定義了緩存的存儲路徑、緩存層級、緩存區名稱、最大緩存大小、緩存文件的最大非活動時間和是否使用臨時路徑。
    • proxy_cache 指令指定了使用的緩存區名稱。
    • proxy_cache_valid 指令設置了不同HTTP狀態碼的緩存時間。
    • add_header X-Proxy-Cache 指令添加了一個自定義頭部,用于顯示緩存狀態。
  5. 測試配置并重啟Nginx: 在保存配置文件后,你可以使用以下命令來測試Nginx配置是否正確:

    sudo nginx -t
    

    如果配置測試通過,你可以重啟Nginx來應用更改:

    sudo systemctl restart nginx
    

高級緩存策略

  1. 使用ETag和Last-Modified: 在 location 塊中添加以下配置:

    location ~* \.(jpg|jpeg|png|gif|ico|css|js)$ {
        etag on;
        if_modified_since exact;
        # 其他配置...
    }
    
  2. 分類型設置緩存時間: 根據不同類型的文件設置不同的緩存時間:

    location ~* \.(jpg|jpeg|png|gif|svg|ico)$ {
        expires 365d;
        add_header Cache-Control "public, immutable";
    }
    
    location ~* \.(css|js)$ {
        expires 30d;
        add_header Cache-Control "public";
    }
    
    location ~* \.(woff|woff2|ttf|eot)$ {
        expires 180d;
        add_header Cache-Control "public";
    }
    
  3. 緩存驗證配置

    location /static/ {
        proxy_cache static_cache;
        proxy_cache_valid 200 302 12h;
        proxy_cache_valid 404 1m;
        proxy_cache_use_stale error timeout updating http_500 http_502 http_503 http_504;
        proxy_cache_lock on;
        # 其他配置...
    }
    

緩存清除策略

當靜態文件更新時,需要確保用戶能獲取最新版本:

  • 文件名版本化:在文件名中加入版本號或哈希值(如 style.a1b2c3.css)。
  • 查詢字符串:添加版本參數(如 style.css?v=1.0.0)。
  • 手動清除:刪除緩存目錄中的文件或重啟Nginx。

最佳實踐

  • 不同類型的文件設置不同的緩存時間
    • 幾乎不變的資源(如字體、logo):1年
    • 常規靜態資源(CSS/JS):30天
    • 可能變化的資源:較短時間或禁用緩存
  • 對CDN友好:設置 public 指令允許中間緩存(如CDN)存儲內容。
  • 使用 immutable:對于帶哈希的文件名,可以使用 immutable 告訴瀏覽器內容永遠不會改變。
  • 監控緩存命中率:通過Nginx日志或狀態模塊監控緩存效果。

0
亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女