在nginx.conf或站点配置文件中添加以下内容:
http {
proxy_cache_path /var/cache/nginx levels=1:2 keys_zone=my_cache:10m inactive=60m use_temp_path=off;
server {
location / {
proxy_cache my_cache;
proxy_pass http://backend;
proxy_cache_valid 200 302 10m;
proxy_cache_valid 404 1m;
}
}
}
proxy_cache_path
: 定义缓存存储路径和参数
/var/cache/nginx
: 缓存文件存储路径levels
: 目录层级结构keys_zone=my_cache:10m
: 定义共享内存区域(名称:大小)inactive=60m
: 60分钟内未被访问的缓存将被删除use_temp_path=off
: 禁用临时路径proxy_cache_key "$scheme$request_method$host$request_uri$cookie_user";
proxy_cache_bypass $http_cache_control $arg_nocache;
proxy_cache_lock on;
proxy_cache_lock_timeout 5s;
proxy_cache_methods GET HEAD;
proxy_cache_min_uses 1;
keys_zone_size = 条目数 × 128字节
proxy_cache_path /var/cache/nginx levels=1:2 keys_zone=my_cache:100m
inactive=30m max_size=1g;
max_size
: 设置缓存总大小限制inactive
和max_size
实现自动清理proxy_cache_path /fast/cache levels=1:2 keys_zone=fast_cache:10m
inactive=1h max_size=100m;
proxy_cache_path /slow/cache levels=1:2 keys_zone=slow_cache:100m
inactive=24h max_size=10g;
server {
location / {
proxy_cache fast_cache;
proxy_cache_valid 200 302 1h;
proxy_cache_background_update on;
proxy_pass http://backend;
# 热数据二次缓存
location ~* \.(jpg|png|css|js)$ {
proxy_cache slow_cache;
proxy_cache_valid 200 302 24h;
}
}
}
location /nginx-cache-status {
stub_status;
allow 127.0.0.1;
deny all;
}
location ~ /purge(/.*) {
proxy_cache_purge my_cache "$scheme$request_method$host$1";
}
nginx -T
: 查看完整配置strace -p <nginx_pid>
: 跟踪系统调用valgrind --tool=massif
: 内存分析keys_zone
大小inactive
时间max_size
限制proxy_cache_min_uses
值proxy_cache_key
是否合理通过以上配置和优化方案,您可以有效管理Nginx缓存并控制其内存占用,实现高性能的缓存服务。