宝塔面板为WordPress启用Nginx FastCGI缓存

安装完WordPress网站之后通常都要安装缓存插件来提高网站速度。

Nginx FastCGI Page Cache是一种通过在Nginx层面存储PHP生成的网页副本的技术,相比其他WordPress缓存插件使用Nginx FastCGI Page Cache速度更快效率更高,唯一的区别就是配置起来要更加麻烦一点。

不过好在现在有宝塔面板(宝塔安装教程)这种简单的VPS管理工具,小白跟着这篇教程也能配置好。

仔细阅读,细心操作。跟着奶爸来一步一步给WordPress启用Nginx FastCGI缓存吧。

Nginx FastCGI缓存单站点配置步骤

创建缓存文件夹

进入宝塔面板后台,进入文件管理界面,在/www/wwwroot/[你网站文件夹]/wp-content/cache/下创建fnginx文件夹。

在宝塔面板创建nginx缓存文件夹

修改网站NGINX配置文件

wordpress网站配置文件修改

回到网站列表,选择你要配置的网站的设置,弹出上图界面选择配置文件,然后添加下面的内容。

Code
#NGINX缓存配置1开始(blog.naibabiji.com替换为你网站正确文件夹名称)
fastcgi_cache_path /www/wwwroot/blog.naibabiji.com/wp-content/cache/ levels=1:2 keys_zone=blogcache:200m max_size=10g inactive=2h use_temp_path=off;
fastcgi_cache_key "$scheme$request_method$host$request_uri";
fastcgi_ignore_headers Cache-Control Expires Set-Cookie;
#NGINX缓存配置1结束

然后在安全证书配置下面添加下面的代码:

Code
#NGINX缓存配置2开始
set $skip_cache 0;

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/*|/tag/.*/feed/*|index.php|/.*sitemap.*\.(xml|xsl)") {
    set $skip_cache 1;
}

if ($http_cookie ~* "comment_author|wordpress_[a-f0-9]+|wp-postpass|wordpress_no_cache|wordpress_logged_in") {
    set $skip_cache 1;
}
#NGINX缓存配置2结束

修改PHP软件配置文件

使用宝塔文件功能,进入/www/server/nginx/conf文件夹,选择你自己PHP版本对应的文件,例如奶爸建站笔记目前是使用的PHP8.4,所以选择编辑enable-php-84.conf文件。

Wp blog 310

在最后一个大括号前面添加上下面的内容

Code
fastcgi_cache blogcache;
fastcgi_cache_valid 200 301 302 2h;
fastcgi_cache_use_stale error timeout updating invalid_header http_500 http_503;
fastcgi_cache_min_uses 1;
fastcgi_cache_lock on;
fastcgi_cache_bypass $skip_cache;
fastcgi_no_cache $skip_cache;
add_header X-FastCGI-Cache $upstream_cache_status;

添加完这些代码后,回到宝塔后台,软件商店,已安装,点击nginx进行重启或者重载配置,没有报错则代表代码添加正确。

测试配置是否生效

Snipaste 2025 09 29 01 06 10

用隐私模式或者退出账号,浏览器右键选择审查元素或者快捷键F12,点击网络,名称下选择你访问的网址,然后标头里面可以看到X-Fastcgi-Cache HIT就代表缓存生效了。

另外你也可以直接观察你创建的缓存文件夹,如果有新的文件夹出现,同样代表生效了。

同服务器多站点配置Nginx FastCGI缓存

如果你服务器上包含多个WordPress网站,都需要配置Nginx FastCGI缓存,可以按照下面的步骤进行。

1、在你要配置的网站目录下创建nginx文件夹,例如/www/wwwroot/blog.naibabiji.com/wp-content/cache/nginx

2、打开/www/server/nginx/conf下的nginx.php文件,在access_log off;下方插入以下代码(网址换成自己的)

Code
# FastCGI缓存配置 - WordPress网站专用
        # blog.naibabiji.com缓存区域
        fastcgi_cache_path /www/wwwroot/blog.naibabiji.com/wp-content/cache/nginx 
                          levels=1:2 
                          keys_zone=blog_cache:100m 
                          max_size=2g 
                          inactive=2h 
                          use_temp_path=off;
        
        # wordpressjc.com缓存区域
        fastcgi_cache_path /www/wwwroot/wordpressjc.com/wp-content/cache/nginx 
                          levels=1:2 
                          keys_zone=wordpressjc_cache:100m 
                          max_size=2g 
                          inactive=2h 
                          use_temp_path=off;
        
        # quhenet.com缓存区域
        fastcgi_cache_path /www/wwwroot/quhenet.com/wp-content/cache/nginx 
                          levels=1:2 
                          keys_zone=quhenet_cache:100m 
                          max_size=2g 
                          inactive=2h 
                          use_temp_path=off;
        
        # FastCGI缓存相关变量设置
        fastcgi_cache_key "$scheme$request_method$host$request_uri";
        fastcgi_cache_use_stale error timeout invalid_header http_500;

3、在/www/server/nginx/conf文件夹下创建wordpress-fastcgi-cache.conf文件,内容如下:

Code
# WordPress FastCGI缓存配置模板
# 适用于所有WordPress网站的通用缓存规则

# 设置不缓存的条件
set $skip_cache 0;

# POST请求不缓存
if ($request_method = POST) {
    set $skip_cache 1;
}

# URL包含查询字符串不缓存
if ($query_string != "") {
    set $skip_cache 1;
}

# WordPress管理后台和特殊页面不缓存
if ($request_uri ~* "/wp-admin/|/xmlrpc.php|wp-.*.php|^/feed/*|/tag/.*/feed/*|index.php|/.*sitemap.*\.(xml|xsl)") {
    set $skip_cache 1;
}

# 已登录用户不缓存
if ($http_cookie ~* "comment_author|wordpress_[a-f0-9]+|wp-postpass|wordpress_no_cache|wordpress_logged_in") {
    set $skip_cache 1;
}

# WooCommerce相关页面不缓存(如果有电商功能)
if ($request_uri ~* "/(cart|my-account|checkout|addons)") {
    set $skip_cache 1;
}

# 包含购物车Cookie不缓存
if ($http_cookie ~* "woocommerce_items_in_cart|woocommerce_cart_hash") {
    set $skip_cache 1;
}

4、依然在/www/server/nginx/conf目录下,分别创建你需要配置的网站对应的enable-php-84.conf文件(网站使用的PHP版本对应的文件),文件名可以参考奶爸的设定:

  • enable-php-84-cache-quhenet.conf
  • enable-php-84-cache-wordpressjc.conf
  • enable-php-84-cache-blog.conf

创建后,每个文件代码只有一处不同,完整代码如下:

Code
location ~ [^/]\.php(/|$) {
    try_files $uri =404;
    fastcgi_pass  unix:/tmp/php-cgi-84.sock;
    fastcgi_index index.php;
    include fastcgi.conf;
    include pathinfo.conf;
    
    # FastCGI缓存配置(替换下方blog_cache为第2步创建的keys_zone值)
    fastcgi_cache blog_cache;
    fastcgi_cache_valid 200 301 302 2h;
    fastcgi_cache_use_stale error timeout updating invalid_header http_500 http_503;
    fastcgi_cache_min_uses 1;
    fastcgi_cache_lock on;
    fastcgi_cache_bypass $skip_cache;
    fastcgi_no_cache $skip_cache;

    # 忽略上游的缓存控制头(重要!)
    fastcgi_ignore_headers Cache-Control Expires Set-Cookie;
    
    # 添加缓存状态头部信息(用于调试)
    add_header X-FastCGI-Cache $upstream_cache_status;
    add_header X-Cache-Skip $skip_cache;
}
}

5、进入/www/server/panel/vhost/nginx文件夹,编辑对应的虚拟主机配置文件。

将现有的include enable-php-84.conf;这一行内容替换为下面内容

Code
# WordPress FastCGI缓存配置 - 必须在PHP配置之前
    include /www/server/nginx/conf/wordpress-fastcgi-cache.conf;
    include enable-php-84-cache-blog.conf;
# 上面这个php文件记得修改为你网站对应的文件

6、操作完毕后,重启nginx,前台测试或者直接查看缓存目录是否有新增文件夹出现。

如何清理缓存

网站后台,插件,安装插件,搜索“Nginx cache”,安装并且启用。

Wp blog 311

然后进入插件设置,把Cache Zone Path后面的输入框填写上你缓存目录/www/wwwroot/blog.naibabiji.com/wp-content/cache/ 即可。

和其他插件配合

想要更进一步提升网站访问速度,提高性能,我们还可以和下列插件配合使用。

1、Redis Object Cache

使用这个插件,需要先到宝塔后台,应用商店,已安装,选择你网站正在使用的php,安装redis扩展后访客使用。

2、Autoptimize

这个插件可以对静态资源进行压缩和整合。

不需要再安装其他的缓存插件,因为网页已经使用Nginx FastCGI缓存了,另外的缓存插件安装了也没什么效果,可能还会引起冲突。

给本文打分 post

需要专业的技术解决方案?

我们的专业团队可以帮助您实现技术目标,提供从设计到开发的全方位服务。

咨询专业服务
🔒

评论已关闭

本文的评论功能已关闭,如有问题欢迎通过其他方式联系我们。

×
二维码

扫码关注