Nginx缓存配置从零开始:加速网站访问的实操指南

为什么网站需要Nginx缓存

Nginx 缓存配置的核心作用是把网页的静态内容(如 HTML、CSS、图片)临时存储到服务器本地,下次用户请求时直接返回缓存副本,避免重复向后端程序(如 PHP、Python)发起请求。
对于 WordPress、Discuz 等动态站点,开启缓存后首屏加载时间可能从 2-3 秒降到 0.5 秒以内,同时降低服务器 CPU 和数据库压力。

动手前的准备清单

  1. 运行环境:一台安装好 Nginx 的服务器(建议使用 CentOS 7/8、Ubuntu 20.04 或宝塔 Linux 面板)。
  2. 管理员权限:能通过 SSH 登录服务器,或已登录宝塔面板后台。
  3. 测试文件:准备一个静态资源文件(如一张 200KB 的图片),放到网站根目录下,方便验证缓存是否生效。
  4. 备份当前配置:操作前先备份 /etc/nginx/nginx.conf 以及网站对应的配置文件(通常在 /etc/nginx/conf.d//www/server/panel/vhost/nginx/)。

一步步配置 Nginx 缓存

方法一:直接修改 Nginx 配置文件(通用)

打开 Nginx 主配置文件(路径可能因系统而异):

sudo vi /etc/nginx/nginx.conf

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:缓存文件存放目录,需要手动创建。
  • levels=1:2:缓存目录层级结构,加速查找。
  • keys_zone=my_cache:10m:缓存元数据共享内存区,名字 my_cache 可自定义,大小 10MB。
  • max_size=1g:缓存总大小上限 1GB,超出后自动删除最旧文件。
  • inactive=60m:60 分钟内无人访问就清理。

保存后,进入你的网站配置(如 default.conf),在 server { }location / { } 中加入:

location / {
    proxy_cache my_cache;
    proxy_cache_valid 200 304 12h;
    proxy_cache_valid 404 1m;
    proxy_cache_use_stale error timeout updating http_500;
    add_header X-Cache-Status $upstream_cache_status;
    proxy_pass http://你的后端地址;
}

创建缓存目录并重启 Nginx:

sudo mkdir -p /var/cache/nginx
sudo chown -R nginx:nginx /var/cache/nginx
sudo nginx -t        # 检查语法
sudo systemctl restart nginx

方法二:宝塔面板可视化操作(适合完全不懂命令行的用户)

  1. 登录宝塔面板,进入 网站 页面,点击对应网站右侧的 设置
  2. 选择 配置文件 标签页,在 server 块内找到 location ~ .*\.php$ 或者 location / 的位置。
  3. 在对应的 location 里插入上述配置片段(注意替换 proxy_pass 为实际后端地址)。宝塔默认代理到本地 PHP-FPM,后端地址通常是 http://127.0.0.1:9000
  4. 点击 保存,然后在面板左侧 服务 里重启 Nginx。

高频问题与避坑提醒

“502 Bad Gateway” 或 “504 Gateway Timeout”

  • 最常见原因是 proxy_pass 指向的后端地址不正确。检查网站使用的是 PHP-FPM 还是反向代理。宝塔环境下一般为 http://127.0.0.1:9000
  • 如果后端是 Docker 或另一台服务器,确保网络连通。

缓存不生效,响应头显示 X-Cache-Status: MISS

  • 检查 proxy_cache_path 目录是否存在且 Nginx 用户有权限。
  • 首次请求一定是 MISS,第二次同 URL 请求应为 HIT。可用浏览器无痕模式多刷新几次。
  • 如果始终 MISS,检查 proxy_cache_valid 是否设定了正确的状态码。静态资源一般设置 200 304 12h 即可。

动态页面不应该缓存

  • 对于登录状态、购物车等动态页面,建议在对应的 location 内关闭缓存:proxy_cache off;。或者通过 Cookie 判断,让 Nginx 跳过缓存。
  • 也可以使用 proxy_no_cache 指令配合 $cookie 变量实现精准控制。

验证缓存是否生效

  1. 查看响应头:使用浏览器 F12 打开开发者工具,进入“网络”标签,刷新页面,点击任意静态资源,在响应头中查找 X-Cache-Status。如果值为 HIT,说明缓存生效;仍为 MISS 则说明未命中。
  2. 查看缓存文件:SSH 登录服务器,执行:
   ls -la /var/cache/nginx/ | head -20

如果目录下有文件生成,说明缓存正在积累。

如果你正在处理 Nginx 缓存配置,建议先按本文步骤完整执行,再根据自己的环境做微调;
遇到异常时优先回看避坑和高频问题部分。
缓存一旦正确开启,你会发现网站响应速度明显提升,服务器负载也随之下降。

分享到:
上一篇
Nginx负载均衡从零开始配置教程
下一篇
Nginx日志分析零基础教程:看懂日志快速定位网站故障
1
系统公告

高考专属福利来袭|凭准考证免费领香港 CN2 云服务器

值高考落幕之际,泽御云开启考生专属回馈 + 产品限时特惠双重活动,助力学子暑期学习建站 高考 考生专属福利 全体应届高考生,凭高考准考证即可免费申领【香港 CN2 轻量云服务器,4 核 4G AMD 处理器】,免费使用周期 30 天,可用于搭建个人站点、编程实操、技术实训,祝各位考生金榜题名,前程似锦! 泽御云资质齐全合规自营机房,线路覆盖香港 CN2、国内 BGP、内蒙电信、美国精品线路,售后全天候技术支持。 官方网站:www.zeyuyun.com,活动限时有效,优惠逾期不再保留。
服务中心
客服
在线客服
24小时为您服务
咨询
联系我们
联系我们,为您的业务提供专属服务。
24/7 技术支持
如果您遇到寻求进一步的帮助,请过工单与我们进行联系。
24/7 即时支持
泽御云
售前客服
泽御云
泽御云
售后客服
泽御云
技术支持
评价
您对当前页面的整体感受是否满意?
😞
非常不满意
😕
不满意
😐
一般
🙂
满意
😊
非常满意