商城首页欢迎来到中国正版软件门户

您的位置: 首页 > 文章列表 > 编程开发 > 如何通过Nginx配置缓存策略

如何通过Nginx配置缓存策略

  发布于2026-07-03 阅读(0)

扫一扫,手机访问

通过Nginx配置缓存策略,算得上是提升网站性能最直接、也最有效的办法之一。说到底,就是让Nginx把后端返回的静态资源或者动态响应先存一份,下次再有同样的请求来,直接拿缓存发回去,省得每次都往后端跑。下面这套配置步骤,基本能覆盖绝大多数常见场景。

如何通过Nginx配置缓存策略

1. 安装Nginx

这个没什么好说的——先确认机器上已经装好了Nginx。如果还没装,去官方文档按系统版本走一遍安装流程就行。

2. 配置缓存目录

缓存文件总要有个地方放。通常习惯放在 /var/cache/nginx 下,当然你也可以按需改路径。创建目录并给Nginx用户赋予权限:

sudo mkdir -p /var/cache/nginx
sudo chown -R www-data:www-data /var/cache/nginx

3. 配置Nginx缓存参数

接下来修改Nginx的主配置文件(比如 /etc/nginx/nginx.conf 或者站点配置文件 /etc/nginx/sites-a vailable/default)。核心是在 http 块里定义缓存路径,然后在 server 块的 location 里启用它。一个最小可用的配置长这样:

http {
    # 缓存路径
    proxy_cache_path /var/cache/nginx levels=1:2 keys_zone=my_cache:10m max_size=1g inactive=60m use_temp_path=off;

    server {
        listen 80;
        server_name example.com;

        location / {
            # 启用缓存
            proxy_cache my_cache;
            proxy_pass http://backend_server;
            proxy_cache_valid 200 302 10m;
            proxy_cache_valid 404 1m;
            add_header X-Proxy-Cache $upstream_cache_status;
        }
    }
}

4. 解释配置参数

这几个参数挺关键,简单拆开说说:

  • proxy_cache_path:定义缓存存放的路径及相关策略。

    • levels=1:2:缓存目录的层级结构,用来分散文件,防止单个目录文件过多。
    • keys_zone=my_cache:10m:给缓存区域取个名字(这里叫 my_cache),并分配10MB共享内存来存储缓存键和元数据。
    • max_size=1g:缓存文件总大小上限,超过这个值会按淘汰策略清理旧缓存。
    • inactive=60m:如果一个缓存项在60分钟内没有被访问,就会从缓存中移除。
    • use_temp_path=off:关闭临时路径,让缓存文件直接写入目标目录,减少磁盘I/O。
  • proxy_cache:在具体的 location 里启用缓存,并指定使用上面定义的 my_cache 区域。

  • proxy_pass:上游后端服务器的地址,比如 http://127.0.0.1:8080

  • proxy_cache_valid:针对不同HTTP状态码设定不同的缓存有效期。比如200和302响应缓存10分钟,404只缓存1分钟。

  • add_header X-Proxy-Cache:在响应头里加一个自定义字段,值为 $upstream_cache_status,方便调试时确认当前请求是命中缓存(HIT)还是未命中(MISS)。

5. 测试配置

改完配置建议先跑个语法检查,避免手滑导致Nginx启动失败:

sudo nginx -t

输出 syntax is ok 就说明没问题。之后重载Nginx让配置生效:

sudo systemctl reload nginx

6. 验证缓存

打开浏览器或者用curl访问网站,同时注意响应头里的 X-Proxy-Cache 字段。第一次请求看到 MISS,第二次就是 HIT——说明缓存已经正常工作了。

7. 进一步优化

上面的配置只是一个起点。实际生产环境中,可以根据业务需求做很多细化的调整:

  • 为不同的请求路径或文件类型设置独立的缓存区域,比如把API接口和静态资源分开缓存。
  • 自定义缓存键(proxy_cache_key),按用户、参数、cookie等维度控制缓存粒度。
  • 规划缓存清除策略,比如通过Nginx的缓存清理模块或者在业务代码里主动触发删除。

做透这一层,网站的响应速度会有一个非常明显的提升。关键在于根据实际流量和内容特性,找到缓存空间、有效期和命中率之间的平衡点。

本文转载于:https://www.yisu.com/ask/61314679.html 如有侵犯,请联系zhengruancom@outlook.com删除。
免责声明:正软商城发布此文仅为传递信息,不代表正软商城认同其观点或证实其描述。

热门关注