在 Nginx 中使用fastcgi_cache可以缓存 PHP-FPM 生成的动态页面,显著降低后端负载并提升响应速度。以下是完整的配置方案和优化技巧。
核心配置架构
用户请求 → Nginx → 检查缓存 → [命中] 直接返回缓存
↓
[未命中] → PHP-FPM → 生成页面 → 存入缓存 → 返回用户
基础配置
1. http 块(全局配置)
1 2 3 4 5 6 7 8 9 10 11 12 13 |
|
2. server/location 块(站点配置)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 |
|
缓存控制策略详解
按 Cookie 排除(用户登录状态)
1 2 3 4 5 6 7 8 9 10 11 |
|
按 URL 排除(后台管理、API)
1 2 3 4 5 |
|
自定义缓存时间(按页面类型)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
|
缓存清理方案
方案 1:使用 ngx_cache_purge 模块(需编译安装)
1 2 3 4 5 6 |
|
方案 2:脚本手动清理
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
|
生产环境优化配置
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
|
监控与调试
查看缓存命中率
1 2 3 4 5 6 7 |
|
关键响应头说明
| 状态 | 含义 |
|---|---|
| HIT | 缓存命中,直接返回 |
| MISS | 缓存未命中,已写入新缓存 |
| BYPASS | 跳过缓存(如带有 Cookie) |
| EXPIRED | 缓存过期,已重新获取 |
| UPDATING | 缓存过期,但返回旧数据(后台更新中) |
| STALE | 返回过期缓存(后端故障时) |
完整 WordPress 优化示例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
|
配置完成后,使用 nginx -t 检查语法,然后 systemctl reload nginx 生效。建议先用小流量测试,确认缓存逻辑符合预期后再全量上线。