Nginx代理缓存配置详细说明以及案例
Nginx代理缓存配置详细说明
启用缓存
/data/nginx/cache
:缓存存储路径。levels=1:2
:目录层级结构。keys_zone=my_cache:10m
:定义共享内存区域,用于存储缓存键和元数据。max_size=10g
:缓存最大大小。inactive=60m
:缓存项在60分钟内未被访问则被删除。use_temp_path=off
:禁用临时路径。在Nginx配置文件中,使用
proxy_cache_path
指令定义缓存路径和参数。示例:
proxy_cache_path /data/nginx/cache levels=1:2 keys_zone=my_cache:10m max_size=10g inactive=60m use_temp_path=off;
配置缓存区域
my_cache
:缓存区域名称,与keys_zone
中定义的名称一致。使用
proxy_cache
指令指定缓存区域。示例:
location / { proxy_cache my_cache; proxy_pass http://backend; }
缓存键
$scheme
:请求协议(http或https)。$proxy_host
:代理服务器的主机名。$request_uri
:请求的URI。使用
proxy_cache_key
指令定义缓存键。示例:
proxy_cache_key "$scheme$proxy_host$request_uri";
缓存有效期
200 302 10m
:状态码为200和302的响应缓存10分钟。404 1m
:状态码为404的响应缓存1分钟。使用
proxy_cache_valid
指令设置缓存的有效期。示例:
proxy_cache_valid 200 302 10m; proxy_cache_valid 404 1m;
缓存绕过
$cookie_nocache
:如果请求中包含nocache
的cookie,则绕过缓存。$arg_nocache
:如果请求参数中包含nocache
,则绕过缓存。使用
proxy_cache_bypass
指令定义条件,满足条件时绕过缓存。示例:
proxy_cache_bypass $cookie_nocache $arg_nocache$arg_comment;
缓存清理
my_cache
:缓存区域名称。"$scheme$proxy_host$1"
:缓存键。使用
proxy_cache_purge
指令清理缓存。示例:
location ~ /purge(/.*) { proxy_cache_purge my_cache "$scheme$proxy_host$1"; }
案例
http { proxy_cache_path /data/nginx/cache levels=1:2 keys_zone=my_cache:10m max_size=10g inactive=60m use_temp_path=off; server { listen 80; server_name example.com; location / { proxy_cache my_cache; proxy_pass http://backend; proxy_cache_key "$scheme$proxy_host$request_uri"; proxy_cache_valid 200 302 10m; proxy_cache_valid 404 1m; proxy_cache_bypass $cookie_nocache $arg_nocache$arg_comment; } location ~ /purge(/.*) { proxy_cache_purge my_cache "$scheme$proxy_host$1"; } } }
该配置将请求代理到
backend
服务器,并使用my_cache
缓存区域缓存响应。缓存键为
$scheme$proxy_host$request_uri
。状态码为200和302的响应缓存10分钟,状态码为404的响应缓存1分钟。
如果请求中包含
nocache
的cookie或参数,则绕过缓存。可以通过
/purge
路径清理缓存。
本篇文章内容来源于:Nginx代理缓存配置详细说明以及案例
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。