Nginx 缓存相关进程
缓存中还涉及两个额外的NGINX进程:
cache manager 周期性地启动,检查高速缓存的状态。如果高速缓存大小超过 proxy_cache_path 中 max_size 参数设置的限制,则高速缓存管理器将删除最近访问过的数据。在两次缓存管理器启动的间隔,缓存的数据量可能短暂超过配置的大小。 cache loader 只运行一次,NGINX 开始之后。它将有关以前缓存的数据的元数据加载到共享内存区域。一次加载整个缓存可能会消耗足够的资源来在启动后的最初几分钟内降低 NGINX 的性能。要避免这种情况,请通过在 proxy_cache_path 指令中包含以下参数来配置缓存的迭代加载: loader_threshold - 迭代持续时间,以毫秒为单位(默认情况下 200) loader_files - 一次迭代期间加载的最大项目数(默认情况下 100) loader_sleeps - 迭代之间的延迟,以毫秒为单位(默认情况下 50)在以下示例中,迭代持续数300 毫秒或直到 200 个项目被加载进去:
proxy_cache_path /data/nginx/cache keys_zone=one:10m loader_threshold=300 loader_files=200;
其他常用参数
配置示例:
proxy_cache_path /path/to/cache levels=1:2 keys_zone=my_cache:10m max_size=10g inactive=60m use_temp_path=off;
server {
...
location / {
proxy_cache my_cache;
# proxy_cache_key "$host$request_uri$cookie_user"; proxy_cache_min_uses 3;
proxy_cache_methods GET HEAD POST;
proxy_cache_valid 200 302 10m;
proxy_cache_valid 404 1m;
# proxy_cache_valid any 5m; proxy_pass http://localhost:8000;
}
}
对应参数说明:
清除缓存
需要提前加一个配置,用于标识使用 HTTP PURGE 方法的请求并删除匹配的 URL 对应的缓存。
1.在 http {} 上下文中创建新变量,例如 $purge_method, 他依赖于 $request_method 变量:
http {
...
map $request_method $purge_method {
PURGE 1;
default 0;
}
}
2.在 location {} 块中,已经配置缓存的前提下,引入 proxy_cache_purge 参数来指定清除缓存请求的条件。例如在上一步指定的 $request_method
server {
listen 80;
server_name www.example.com;
location / {
proxy_pass https://localhost:8002;
proxy_cache mycache;
proxy_cache_purge $purge_method;
}
}








