WordPress

WordPress 站点开启 Nginx FastCGI 页面缓存

WordPress 站点开启 Nginx FastCGI 页面缓存

FastCGI 是一种用于 Web 服务器和后台应用程序之间的通用协议,开启 Nginx FastCGI 缓存后,PHP 生成的页面会被临时存储起来,从系统层面实现网页静态化。当用户发起相同请求时,系统会直接调用缓存页面,大幅提升 PHP 网站的响应速度。

本篇文章的测试环境为 Nginx 1.24 + PHP 7.4,并使用宝塔面板进行相关配置。

参考文章:
https://www.diiamo.cn/bt-nginx-fastcgi_cache
https://blog.naibabiji.com/skill/nginx-fastcgi.html

配置 FastCGI 缓存

1、创建 /tmp/wordpress-cache 缓存文件夹,该文件夹需确保在 open_basedir 允许的路径内,并具有访问权限。建议使用 tmp 目录,不要随意更改路径,以免影响缓存功能。

WordPress 站点开启 Nginx FastCGI 页面缓存

2、根据自己使用的 PHP 版本,找到对应的配置文件,例如 /www/server/nginx/conf/enable-php-74.conf ,并复制文件中的内容备用。

WordPress 站点开启 Nginx FastCGI 页面缓存

3、修改 WordPress 网站的 Nginx 配置文件,该配置文件对应路径为 /www/server/panel/vhost/nginx/*.conf ,在文件顶部添加以下代码。

# 此处配置根据实际需求进行调整
# fastcgi_cache_path 定义缓存存放路径。
# keys_zone=WORDPRESS:200m 分配 200MB 内存用于缓存键管理
# max_size=2g 缓存占用磁盘最大 2GB
# inactive=1d 缓存内容 1 天未被访问将被清理
# fastcgi_temp_path FastCGI 临时文件存放路径

fastcgi_cache_path /tmp/wordpress-cache levels=1:2 keys_zone=WORDPRESS:200m max_size=2g inactive=1d use_temp_path=off;
WordPress 站点开启 Nginx FastCGI 页面缓存

4、配置 FastCGI 缓存规则。

set $skip_cache 0;
# POST请求不缓存
if ($request_method = POST) {
    set $skip_cache 1;
}
# 有动态查询参数的请求不缓存
if ($query_string != "") {
    set $skip_cache 1;
}
# 后台和特定系统文件不缓存
if ($request_uri ~* "/wp-admin/|/xmlrpc.php|wp-.*.php|/feed/|index.php|sitemap(_index)?.xml") {
    set $skip_cache 1;
}
# 登录用户或特殊cookie不缓存
if ($http_cookie ~* "wordpress_[a-f0-9]+|wp-postpass|wordpress_no_cache|wordpress_logged_in") {
    set $skip_cache 1;
}
WordPress 站点开启 Nginx FastCGI 页面缓存

5、注释掉原有 PHP 引用配置,粘贴原始文件内容,并新增 FastCGI 缓存相关配置。

# 注释掉 PHP 引用配置
# include enable-php-74.conf;
location ~ [^/]\.php(/|$)
{
    try_files $uri =404;
    fastcgi_pass  unix:/tmp/php-cgi-74.sock;
    fastcgi_index index.php;
    include fastcgi.conf;
    include pathinfo.conf;
    # 新增缓存规则
    fastcgi_cache WORDPRESS;
    fastcgi_cache_valid 200 301 302 2h;
    fastcgi_cache_min_uses 1;
    fastcgi_cache_lock on;
    fastcgi_cache_bypass $skip_cache;
    fastcgi_cache_key "$scheme$request_method$host$request_uri";
    fastcgi_cache_use_stale error timeout updating invalid_header http_500 http_503;
    fastcgi_no_cache $skip_cache;
    # 安全与调试头
    fastcgi_ignore_headers Cache-Control Expires Set-Cookie;
    add_header X-FastCGI-Cache "$upstream_cache_status From $host";
    add_header X-Frame-Options SAMEORIGIN;
    add_header X-Content-Type-Options nosniff;
    add_header X-XSS-Protection "1; mode=block";
}
WordPress 站点开启 Nginx FastCGI 页面缓存

6、修改完成后,重载 Nginx 配置。如果使用终端,可以执行以下命令。

# 测试配置是否正确
nginx -t

# 重载 Nginx
systemctl reload nginx
WordPress 站点开启 Nginx FastCGI 页面缓存

7、完成以上配置后,FastCGI 缓存基本已经生效。

打开浏览器访问网站,使用开发者工具查看响应头,首次访问页面通常会显示如下内容:

# MISS 表示缓存未命中
X-FastCGI-Cache: MISS From yourdomain.com
WordPress 站点开启 Nginx FastCGI 页面缓存

刷新页面几次后,响应头应变为:

# HIT 表示该页面已被缓存
X-FastCGI-Cache: HIT From yourdomain.com

此时检查 /tmp/wordpress-cache 目录,确认是否生成了缓存文件。

WordPress 站点开启 Nginx FastCGI 页面缓存

安装缓存清理插件

配置 FastCGI 缓存后,为了确保内容更新能够及时刷新缓存,建议安装 WordPress 缓存清理插件。插件可以在文章发布、修改或用户操作时自动清理相关缓存,避免用户看到过期内容或功能异常。

1、登录 WordPress 后台管理,搜索并安装 Nginx Cache 插件。

WordPress 站点开启 Nginx FastCGI 页面缓存

2、该插件默认为英文界面,如需中文界面,可以前往 https://wpfanyi.com/plugins/nginx-cache 下载语言包,并将语言包文件替换到插件目录 /wp-content/plugins/nginx-cache/languages

3、安装完成后,前往 Nginx Cache 插件的设置页面,填写缓存文件夹路径,并勾选清除缓存选项。

WordPress 站点开启 Nginx FastCGI 页面缓存

4、配置后可以通过发布或更新文章,来测试插件是否能自动清理过期缓存。

本文为原创文章,著作权归作者所有:来自「KOBIN 技术随笔」作者的原创作品,转载请标明出处。
WordPress 站点开启 Nginx FastCGI 页面缓存
https://blog.kobin.cn/blog/program/p2/3714.html
(0)

评论功能升级维护公告

为响应国家网络信息安全合规要求,并进行全面的安全策略升级,本站自即日起暂时关闭博客的评论功能。

在此期间,您将无法发表新的评论,但仍可正常浏览所有历史文章及现有评论。如果您遇到问题需要协助,可以选择在线留言,或者发送邮件到 chen@kobin.cn 。

对于给您带来的不便,深表歉意。感谢您的理解与支持!

KOBIN 技术随笔
2025 年 8 月 26 日