在 Linux 上配置 Nginx 缓存,通常分为 静态资源缓存(浏览器端) 和 Nginx 反向代理缓存(服务器端) 两种场景。下面按常见用法说明。
适用于 CSS、JS、图片等,不改变内容、长期不变的文件。
server {
listen 80;
server_name example.com;
root /var/www/html;
location ~* \.(js|css|png|jpg|jpeg|gif|ico|svg|woff2)$ {
expires 30d;
add_header Cache-Control "public, immutable";
}
}
expires 30d:浏览器缓存 30 天Cache-Control: public:可被浏览器和 CDN 缓存immutable:内容不变时不再校验适用于 后端接口、动态页面(如 Java / PHP / Node)。
在 http 块中:
http {
proxy_cache_path /var/cache/nginx levels=1:2 keys_zone=my_cache:10m max_size=1g inactive=60m use_temp_path=off;
}
参数说明:
/var/cache/nginx:缓存目录keys_zone=my_cache:10m:缓存名称 + 内存大小max_size=1g:磁盘最大缓存inactive=60m:60 分钟未被访问则删除创建目录:
mkdir -p /var/cache/nginx
chown -R nginx:nginx /var/cache/nginx
server {
listen 80;
server_name api.example.com;
location / {
proxy_pass http://127.0.0.1:8080;
proxy_cache my_cache;
proxy_cache_valid 200 302 10m;
proxy_cache_valid 404 1m;
proxy_cache_key $scheme$proxy_host$request_uri;
add_header X-Cache-Status $upstream_cache_status;
}
}
MISS:未命中HIT:命中缓存BYPASS:绕过缓存proxy_cache_bypass $http_cache_control;
proxy_no_cache $http_pragma $http_authorization;
例如登录接口不缓存:
location /login {
proxy_pass http://127.0.0.1:8080;
proxy_cache off;
}
直接删除缓存目录:
rm -rf /var/cache/nginx/*
或使用 proxy_cache_purge(需安装 ngx_cache_purge 模块)。
✅ 静态资源:浏览器缓存
✅ 动态接口:反向代理缓存
✅ 加 X-Cache-Status 方便调试
✅ 缓存时间按业务重要性设置
如果你能告诉我:
我可以给你一份可直接用的完整 nginx.conf。