CentOS下Nginx緩存機制主要涉及HTTP緩存和FastCGI緩存,核心是通過配置緩存路徑、存儲策略及控制規則提升性能,減少后端負載。以下是詳細說明:
HTTP緩存(反向代理緩存)
緩存后端服務器(如應用服務器)的響應內容,適用于靜態資源、API響應等。
proxy_cache_path
:定義緩存路徑、層級、大小等,如/var/cache/nginx levels=1:2 keys_zone=my_cache:10m max_size=1g inactive=60m
。proxy_cache
:啟用緩存并指定緩存區域(如my_cache
)。proxy_cache_valid
:設置不同HTTP狀態碼的緩存時間,如200 302 10m
(緩存10分鐘)。inactive
:緩存未被訪問超過指定時間后刪除(如60m
)。use_temp_path off
:直接寫入緩存目錄,避免臨時文件開銷。FastCGI緩存
緩存動態腳本(如PHP)的執行結果,適用于PHP-FPM等動態服務。
fastcgi_cache_path
:類似proxy_cache_path
,專為FastCGI設計。fastcgi_cache
:啟用緩存并綁定緩存區域。fastcgi_cache_valid
:控制動態響應的緩存時長。安裝Nginx
確保已安裝Nginx及緩存相關模塊(默認包含proxy_cache
和fastcgi_cache
):
sudo yum install nginx
配置緩存路徑
在/etc/nginx/nginx.conf
的http
塊中添加:
# HTTP緩存配置
proxy_cache_path /var/cache/nginx levels=1:2 keys_zone=my_cache:10m max_size=1g inactive=60m use_temp_path off;
# FastCGI緩存配置(針對PHP)
fastcgi_cache_path /var/cache/nginx levels=1:2 keys_zone=fcgi_cache:10m max_size=1g inactive=60m use_temp_path off;
啟用緩存規則
location / {
proxy_pass http://backend_server;
proxy_cache my_cache;
proxy_cache_valid 200 302 10m; # 緩存200/302狀態碼10分鐘
proxy_cache_valid 404 1m; # 緩存404狀態碼1分鐘
add_header X-Proxy-Cache $upstream_cache_status; # 顯示緩存狀態(HIT/MISS)
}
location ~ \.php$ {
fastcgi_pass unix:/var/run/php-fpm.sock;
fastcgi_cache fcgi_cache;
fastcgi_cache_valid 200 302 10m;
fastcgi_cache_valid 404 1m;
add_header X-FastCGI-Cache $upstream_cache_status;
}
重啟Nginx生效
sudo nginx -t # 測試配置語法
sudo systemctl restart nginx
查看緩存狀態
通過響應頭X-Proxy-Cache
或X-FastCGI-Cache
判斷緩存是否命中:
HIT
:命中緩存,直接返回本地內容。MISS
:未命中緩存,需請求后端服務器。高級緩存控制
Cache-Control
和Expires
頭控制客戶端緩存(如Cache-Control: max-age=3600
)。proxy_cache_purge
模塊清除指定緩存(需安裝模塊)。proxy_cache_bypass
指令在特定條件下(如帶no-cache
參數的請求)不使用緩存。max-age=31536000
),并啟用expires
頭。10m
),或結合ETag
/Last-Modified
實現協商緩存。chown -R nginx:nginx /var/cache/nginx
)。通過以上配置,可顯著提升Nginx在CentOS環境下的響應速度,降低后端服務器壓力。