Nginx proxy_cache:不买CDN,动态站也能提速一倍

来源:互联网 时间:2026-08-27

小站流量上来后最先想到的是上CDN,但要么收费要么有备案门槛。其实如果你的页面动态成分不高,Nginx自带的proxy_cache就能在服务器本地做一层缓存,动态请求打到后端的次数直接砍掉九成。

思路是让Nginx把后端返回的内容按key缓存到磁盘,同一个URL在缓存有效期内只回源一次,其余全走本地文件。配置分三块:定义缓存路径、开启缓存、设置过期策略。

# http 块:定义缓存区
proxy_cache_path /var/cache/nginx levels=1:2
keys_zone=page_cache:50m
max_size=1g inactive=30m use_temp_path=off;

# server 块里应用
location / {
proxy_pass http://127.0.0.1:8080;
proxy_cache page_cache;
proxy_cache_key $scheme$host$request_uri;
proxy_cache_valid 200 10m; # 200响应缓存10分钟
proxy_cache_valid 404 1m; # 404只缓存1分钟

# 响应头里标记命中状态,方便调试:HIT/MISS
add_header X-Cache-Status $upstream_cache_status;
}

有几个关键开关。proxy_cache_use_stale让缓存过期但后端挂掉时继续吐旧缓存,容灾神器;登录用户这类个性化内容千万别缓存,用proxy_cache_bypass配合cookie跳过。

# 后端故障时用过期缓存顶住
proxy_cache_use_stale error timeout updating http_500 http_503;

# 带登录cookie的请求绕过缓存
proxy_cache_bypass $cookie_login_user;
proxy_no_cache $cookie_login_user;

验证看那个X-Cache-Status头:第一次请求是MISS,刷新变HIT,说明缓存已经工作。发布新内容后想立即生效,删掉对应缓存文件或装个缓存清理模块都行。对论坛、资讯类站点,这套本地缓存配合之前说过的静态化思路,一台普通VPS扛住每天几十万访问不稀奇。

相关文章

A5创业网 版权所有