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;
}