精选资源
分享最好的给你

宝塔面板WordPress多站点开启Nginx Fastcgi_cache缓存配置

WordPress缓存插件可选择性很多,为什么还要Nginx Fastcgi_cache缓存呢?

Nginx Fastcgi_cache缓存不经过PHP处理,直接在Nginx就会被拦截访问到缓存文件,效率提高了不少。而且就算PHP服务挂了,只要缓存存在并且没有过期,页面依然能访问。

本文主要整理一下宝塔面板WordPress多站点同时开启Nginx Fastcgi_cache缓存的配置。

宝塔面板安装的Nginx已经编译好了ngx_cache_purge模块,直接进入正题。

Nginx配置

进入 宝塔面板 – 软件商店 – Nginx – 设置 – 配置修改:

在http块中增加一下内容(搜索“tcp_nodelay on;”在下面新增就行):

下面配置文件中的‘/tmp/***’缓存路径请自行提前创建,否则可能会路径不存在而无法启动nginx,max_size请根据分区大小自行设置

#站点1缓存配置
fastcgi_cache_path /tmp/wpcache levels=1:2 keys_zone=WORDPRESS:250m inactive=1d max_size=1G;
#站点2缓存配置
fastcgi_cache_path /tmp/vpsbanet levels=1:2 keys_zone=VPSBANET:250m inactive=1d max_size=1G;
#如果要开启更多站点Nginx Fastcgi_cache缓存,请继续增加,注意每个站点的 缓存路径 和 keys_zone 不能一样!
fastcgi_temp_path /tmp/wpcache/temp;
fastcgi_cache_key "$scheme$request_method$host$request_uri";
fastcgi_cache_use_stale error timeout invalid_header http_500;
#不对从被代理服务器传来的应答进行转发
fastcgi_hide_header Pragma; 
#忽略一切nocache申明,避免不缓存伪静态等
fastcgi_ignore_headers Cache-Control Expires Set-Cookie;

 

站点配置

进入 宝塔面板 – 网站 – 点击要开启缓存的站点后面“设置” – 配置文件:

搜索“#SSL-END”在下面新增:

修改下面两个内容,其他默认即可。

fastcgi_pass路径需要修改,看看自己PHP版本,如:PHP 7.4版本,修改为:“fastcgi_pass unix:/tmp/php-cgi-74.sock;”

fastcgi_cache 需要修改为上一步“Nginx配置”中网站对应的自定义“keys_zone”值。

#缓存配置开始
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;
} 
#对登录用户、评论过的用户不展示缓存
if ($http_cookie ~* "comment_author|wordpress_[a-f0-9]+|wp-postpass|wordpress_no_cache|wordpress_logged_in") {
    set $skip_cache 1;
}
#这里请参考你网站之前的配置,特别是sock的路径,弄错了就502了! 
location ~ [^/].php(/|$) {
    #fastcgi_pass remote_php_ip:9000;
    fastcgi_pass unix:/tmp/php-cgi-80.sock;
    fastcgi_index index.php;
    include fastcgi.conf;
    add_header Strict-Transport-Security "max-age=63072000; includeSubdomains; preload";
    #新增的缓存规则
    fastcgi_cache_bypass $skip_cache;
    fastcgi_no_cache $skip_cache;
    add_header X-Cache "$upstream_cache_status From $host";
    add_header Cache-Control max-age=0;
    add_header Nginx-Cache "$upstream_cache_status";
    add_header Last-Modified $date_gmt;
    add_header X-Frame-Options SAMEORIGIN; # 只允许本站用 frame 来嵌套
    add_header X-Content-Type-Options nosniff; # 禁止嗅探文件类型
    add_header X-XSS-Protection "1; mode=block"; # XSS 保护
    etag on;
    fastcgi_cache VPSBANET;
    fastcgi_cache_valid 200 301 302 1d;
}
#缓存配置结束

安装Nginx Helper插件

wordpress安装Nginx Helper插件配合清除缓存。

安装并启用Nginx Helper插件后,点击wordpress后台 – 设置 – Nginx Helper。

勾选‘Enable Purge’,勾选‘Purge Method’中的‘Delete local server cache files’,点击‘Save AIl Changes’保存配置。如下图:

修改wp-config.php文件

Nginx Helper插件默认清理的缓存路径为“/var/run/nginx-cache”,因为我们开启了多站点缓存并自定义了缓存路径,所以需要在wp-config.php中定义一下缓存路径,Nginx Helper才会正常清理缓存。

网站根目录wp-config.php文件中新增:

//根据实际情况定义缓存的存放路径
define( 'RT_WP_NGINX_HELPER_CACHE_PATH','/tmp/vpsbanet');

其中文件夹路径就是你自己定义的站点缓存路径。

测试

浏览器无痕模式并F12打开浏览器开发者工具,点击网络(或Network)游客身份打开开启缓存的网站,鼠标点击自己域名那一项。

第一次访问这里会显示nginx-cache: MISS,因为还没有缓存,如下图:

F5刷新网站会显示nginx-cache: HIT,则说明缓存开启成功了,正常访问到了缓存文件,如下图:

 

点击wordpress后台Nginx Helper插件中的“Purge Entire Cache”按钮后,再次F5刷新页面,如果和第一次显示nginx-cache: MISS则说明缓存清理成功,插件也是可以正常工作的。

结束

赞(2)
未经允许不得转载:VPS吧 » 宝塔面板WordPress多站点开启Nginx Fastcgi_cache缓存配置

相关推荐

  • 暂无文章

评论 抢沙发