Nginx原生支持proxy_cache和fastcgi_cache,无需安装第三方模块;分别用于缓存反向代理的动态页面、PHP输出,以及为静态首页配置浏览器强缓存。

Nginx 默认不带页面缓存加速模块,但不需要额外“安装模块”来实现页面缓存——它原生支持 proxy_cache(反向代理缓存)和 fastcgi_cache(PHP 动态内容缓存),两者都不依赖第三方模块,只要 Nginx 编译时未禁用对应功能(默认开启),即可直接配置使用。
真正需要动手的,是正确启用并精细配置缓存机制,而不是加模块。
以下分三类常见场景说明怎么做:
用 proxy_cache 缓存后端动态页面(如 Node/Java/Python 应用)
适用于 Nginx 作为反向代理,上游是其他 Web 服务的情况。
- 在
http{}块中定义缓存区:proxy_cache_path /var/cache/nginx/proxy levels=1:2 keys_zone=mycache:100m inactive=1h max_size=2g;
- 在
server或location中启用:location / { proxy_pass http://127.0.0.1:3000; proxy_cache mycache; proxy_cache_valid 200 302 10m; proxy_cache_key "$host$request_uri"; add_header X-Cache-Status $upstream_cache_status; }
注意:
proxy_cache不要求开启反向代理“必须跨机器”,本地端口转发(如proxy_pass http://127.0.0.1:8080)完全合法且常用。
用 fastcgi_cache 缓存 PHP 页面(如 WordPress、ThinkPHP)
适用于 PHP-FPM 架构,无需改代码,直接在 Nginx 层缓存 HTML 输出。
- 在
http{}块中添加:fastcgi_cache_path /var/cache/nginx/fastcgi levels=1:2 keys_zone=phpcache:100m inactive=60m max_size=1g; fastcgi_cache_key "$scheme$request_method$host$request_uri"; fastcgi_cache_valid 200 302 10m; fastcgi_cache_valid 404 1m;
- 在
location ~ \.php$中启用:fastcgi_cache phpcache; fastcgi_cache_bypass $cookie_session; # 有登录态不读缓存 fastcgi_no_cache $cookie_session; # 有登录态不写缓存
为纯静态首页(HTML 文件)启用强浏览器缓存
如果首页是生成好的 index.html(如 Hugo、VuePress 静态站),可跳过后端,直接由 Nginx 返回并设置长效缓存:
location = / {
try_files /index.html =404;
add_header Cache-Control "public, max-age=86400, immutable";
add_header Vary "User-Agent";
}
immutable表示资源不可变,现代浏览器会跳过If-None-Match校验,进一步提速。
不需要编译新模块,也不必装 ngx_cache_purge(除非你要手动清缓存)。日常运维中,95% 的页面缓存需求靠这三类原生配置就能覆盖。











