Nginx在Debian上的緩存策略主要包括反向代理緩存、內容緩存、靜態文件緩存和FastCGI緩存。以下是具體的緩存策略和配置示例:
Nginx作為反向代理緩存,將從后端服務器獲取的內容緩存到本地。對于后續相同請求,Nginx直接返回緩存內容,無需請求后端服務器。
Nginx可以緩存內容本身(如HTTP響應),減少對后端的請求,提高響應速度。
Nginx通常用于緩存靜態資源,如圖片、CSS文件、JavaScript文件等。通過長時間緩存靜態文件,減少靜態文件的重復請求,提高網站響應速度。
對于使用FastCGI協議的動態內容,Nginx也支持緩存,這對于PHP、Python、Ruby等后端應用程序非常有用。
server {
listen 80;
server_name static.example.com;
# 靜態資源根目錄
root /data/static;
# 文件查找規則
location ~* \.(jpg|jpeg|png|gif|ico|css|js)$ {
# 緩存控制頭
add_header Cache-Control "public, max-age=31536000, immutable";
# 開啟高效文件傳輸
sendfile on;
tcp_nopush on;
# 文件元數據緩存
open_file_cache max=1000 inactive=20s;
open_file_cache_valid 30s;
# 文件預讀
read_ahead 1m;
# 暴力防盜鏈
valid_referers none blocked server_names *.example.com;
if ($invalid_referer) {
return 403;
}
}
# 版本化資源處理
location ~* ^/v\d+/(.*)$ {
try_files /$1 =404;
}
}
Cache-Control: public, max-age=31536000, immutable;
:公共緩存,最大年齡31536000秒,不可變。location ~* \.(jpg|jpeg|png|gif|css|js|ico|woff|woff2|ttf|eot|svg|otf)$ {
expires 30d;
add_header Cache-Control "public";
access_log off;
}
location /product/ {
proxy_cache cache_zone;
proxy_cache_key $uri;
proxy_cache_valid 200 10m;
proxy_cache_valid 404 1m;
proxy_cache_use_stale error timeout updating;
}