温馨提示×

怎样配置linux nginx缓存

小樊
35
2026-10-29 03:18:15
栏目: 智能运维

在 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:内容不变时不再校验

二、Nginx 反向代理缓存(服务端缓存)

适用于 后端接口、动态页面(如 Java / PHP / Node)。

1️⃣ 定义缓存目录

在 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

2️⃣ 在 server / location 中使用缓存

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;
}

四、清理 Nginx 缓存

直接删除缓存目录:

rm -rf /var/cache/nginx/*

或使用 proxy_cache_purge(需安装 ngx_cache_purge 模块)。


五、常用优化建议

✅ 静态资源:浏览器缓存
✅ 动态接口:反向代理缓存
✅ 加 X-Cache-Status 方便调试
✅ 缓存时间按业务重要性设置


如果你能告诉我:

  • 是 静态网站 / 接口 / 反向代理?
  • 用的是 Ubuntu / CentOS?
  • 是否使用 Docker?

我可以给你一份可直接用的完整 nginx.conf。

0 踩