Ngx 反向代理缓存规则
Last updated
Last updated
upstream source-nginx {
server 8.8.8.8:8080;
}
proxy_cache_path cache levels=1:2 keys_zone=cache:10m max_size=10g inactive=60m use_temp_path=off;
server {
listen 11119;
add_header Access-Control-Allow-Origin: *;
add_header Access-Control-Allow-Methods: *;
add_header Access-Control-Allow-Headers 'DNT,X-Mx-ReqToken,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Authorization';
access_log /var/log/nginx/exc/agent-22222.access.log main;
error_log /var/log/nginx/exc/agent-22222.error.log;
location / {
proxy_pass http://source-nginx;
}
location ~ .*\.(gif|jpg|jpeg|bmp|png|ico|txt|js|css)$
{
proxy_ignore_headers Cache-Control;
proxy_cache cache; # 缓存路径
proxy_cache_min_uses 1; # 被请求 1 次以上时才缓存
proxy_cache_revalidate on; # 验证当前缓存的内容是否仍然有效
proxy_cache_lock on; # 启用,多个客户端请求的文件不在缓存中,只有第一个请求是通过原始服务器的。其余请求将等待第一个请求的缓存,然后从缓存中提取文件。
proxy_cache_lock_timeout 1s; # 等待缓存锁超时之后将直接请求后端,结果不会被缓存
proxy_cache_use_stale error timeout updating http_500 http_502 http_503 http_504; # 指定在后端服务器在返回什么状态码的情况下可以使用过期的缓存
proxy_cache_background_update on; # 指示当客户端请求已过期或正在从原始服务器更新的缓存
proxy_cache_valid 200 206 304 301 302 1h; # 根据返回状态码,缓存有效期为30分钟
proxy_cache_key "$scheme$request_method$host$request_uri"; # 缓存格式 # proxy_cache_key $uri; #proxy_cache_key $host$uri$is_args$args;
proxy_set_header Host $host:$server_port;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Accept-Encoding ""; # 反向代理中,BR算法,需提前开启,设置优先使用 brotli, 告知后端:前端不接受 Gzip 编码
add_header X-Proxy-Cache $upstream_cache_status; # 添加缓存命中状态到客户端
proxy_pass http://source-nginx;
}
}