在 Debian 上通过 Nginx 配置缓存,通常分为 静态资源缓存(浏览器端/代理端) 和 反向代理缓存(Nginx 自身缓存) 两类。下面按常见场景一步步说明。
sudo apt update
sudo apt install nginx
配置文件位置:
/etc/nginx/nginx.conf/etc/nginx/sites-enabled/sudo nginx -tsudo systemctl reload 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 天immutable:内容不变时不重新请求适合 Nginx → 后端(PHP / Java / Node)
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:缓存目录my_cache:缓存名称10m:内存索引大小1g:最大磁盘缓存60m:60 分钟未访问则删除创建目录:
sudo mkdir -p /var/cache/nginx
sudo chown -R www-data:www-data /var/cache/nginx
server {
listen 80;
server_name example.com;
location / {
proxy_pass http://127.0.0.1:8080;
proxy_set_header Host $host;
proxy_cache my_cache;
proxy_cache_valid 200 302 10m;
proxy_cache_valid 404 1m;
add_header X-Cache $upstream_cache_status;
}
}
X-Cache 值说明:
HIT:命中缓存MISS:未命中BYPASS:跳过缓存location /api/ {
proxy_pass http://127.0.0.1:8080;
proxy_cache_bypass $cookie_session;
proxy_no_cache $cookie_session;
}
或按请求方法:
proxy_cache_methods GET HEAD;
如果你是 Nginx + PHP-FPM:
fastcgi_cache_path /var/cache/nginx/fcgi levels=1:2 keys_zone=php_cache:10m inactive=60m;
location ~ \.php$ {
fastcgi_pass unix:/run/php/php8.2-fpm.sock;
fastcgi_cache php_cache;
fastcgi_cache_valid 200 10m;
add_header X-Cache $upstream_cache_status;
}
sudo rm -rf /var/cache/nginx/*
sudo systemctl reload nginx
❌ 缓存了带 Cookie 的页面
✅ 用 proxy_no_cache 排除登录用户
❌ 缓存了 POST 请求
✅ Nginx 默认不缓存 POST
❌ 权限问题
✅ /var/cache/nginx 必须属于 www-data
如果你能告诉我:
我可以直接给你一份 可复制的完整配置。