WordPress使用宝塔面板开启Nginx fastcgi_cache缓存加速

很早之前,技术宅就折腾过Nginx开启fastcgi_cache缓存加速,这能使WordPress实现静态页面访问!更多大家可以参考《关于Nginx开启fastcgi_cache缓存加速的一些小优化》,但是之前技术宅的环境是自编译的,那在使用宝塔面板的情况下,我们该任何开启Nginx fastcgi_cache缓存加速呢?今天技术宅就来简单记录下,炒鸡简单!

网站环境

查看Nginx配置

执行nginx -V 查看宝塔面板Nginx的编译配置!

WordPress使用宝塔面板开启Nginx fastcgi_cache缓存加速

执行以上命令后,我们可以看到宝塔Nginx已经编译了ngx_cache_purge模块,那就很方便了!或者我们可以使用以下命令查看ngx_cache_purge模块有没有编译安装:

nginx -V 2>&1 | grep -o ngx_cache_purge 查看ngx_cache_purge是否安装,没有数据表示未安装

Nginx配置实例

宝塔既然已经安装了此模块,那接下来我们就通过修改配置文件来启用此模块了!

WordPress使用宝塔面板开启Nginx fastcgi_cache缓存加速

选择对应网站,点击设置,修改Nginx默认的配置文件!

添加配置内容

首先,我们需要在dev/shm/目录创建新文件夹,命名为nginx-chache(记住Nginx-cache)很重要!

我们首先在对应网站的配置文件最开始的地方,也就是文件内容顶端输入以下内容:

fastcgi_cache_key "$scheme$request_method$host$request_uri";
fastcgi_cache_path /dev/shm/nginx-cache levels=1:2 keys_zone=WORDPRESS:100m inactive=60m;
fastcgi_cache_use_stale error timeout invalid_header http_500;
fastcgi_ignore_headers Cache-Control Expires Set-Cookie;

然后在server字段下添加如下内容,为了防止小白不清楚,技术宅这里指定下,大家在 #SSL-END下方添加如下内容:

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;
        }
       #如果需要对所有用户缓存,请将以上代码改为下方的,两段代码只可任选其一#if ($http_cookie ~* "comment_author|wordpress_[a-f0-9]+") {#set $skip_cache 1;#}#这里请参考你网站之前的配置,特别是sock的路径,弄错了就502了!关于sock,宝塔面板的在/www/server/php/72/etc/php-fpm.conf中有配置路径宝塔面板的socklocation ~ [^/]\.php(/|$)
            {
                try_files $uri =404;
                fastcgi_pass unix:/tmp/php-cgi-72.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";
                fastcgi_cache WORDPRESS;
                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_valid 200 301 302 1d;
        }
 
        #缓存清理配置(可选模块,请细看下文说明)location ~ /purge(/.*) {
            allow 127.0.0.1;
            allow "服务器公网IP";
            deny all;
            fastcgi_cache_purge WORDPRESS "$scheme$request_method$host$1";
        }

其中add_header Cache-Control如果是动态内容要实时更新的话,可以设置为0,否则可以设置时间大一些。

然后安装WordPress插件!

安装Nginx Helper插件

置好了fastcgi_cache缓存之后,我们需要安装插件, fastcgi_cache 有一个量身定做的 WordPress 缓存清理插件:Nginx Helper。这个插件不定时更新,而且更新的很频繁。安装这个插件 ,非常简单,直接进入 WordPress 后台插件安装界面搜索 Nginx Helper 关键词在线安装即可。

WordPress使用宝塔面板开启Nginx fastcgi_cache缓存加速

首先是开启purge,然后我们选择nginx Fastcgin cahe,因为就我们用就是这个缓存。之后选择 Delete local server cache files。当然第一个也可以用,但是一般推荐用Delete local server cache files,因为每个服务器的环境都不一样,缓存路径也会不尽相同就会导致插件无法找到缓存文件并删除!

插件还提供了其它的一些设置,功能非常丰富,例如发表新文章、新评论时是否更新Nginx缓存等。

WordPress使用宝塔面板开启Nginx fastcgi_cache缓存加速

因为技术宅是对所有人缓存,所以全选了,请根据自己的实际情况勾选!

3.1清理模式选择

清理模式还需要仔细说下。

①、purge 模式

这个模式需要保留上文 Nginx 配置中的 purge 清理路径,清理的时候会产生一个请求。

出于安全考虑,一般 purge 都不会完全开放!只有特定的 IP 可以访问,所以,如果用了 CDN 的朋友,再使用模式一,则需要在服务器上的 /etc/hosts 中将网站域名解析为服务器真实 IP,以便插件直接请求 purge 路径,而不用走 CDN 节点,避免请求被拒绝。还是没搞懂的话就放弃这个模式吧!

②、文件模式

模式二是直接清理对应的缓存文件,不需要请求 purge 这个清理路径,所以使用模式二,不需要配置上文 Nginx 的 purge 规则(我个人推荐使用这个模式)。

由于插件作者定义的缓存路径是 /var/run/nginx-cache ,而我们可能会根据服务器实际情况来自定义缓存路径,这样一来,缓存路径的不同就会导致插件无法找到缓存文件并删除!

接下来我们需要添加以下代码到WordPresswp-config.php文件中!

define('RT_WP_NGINX_HELPER_CACHE_PATH','/dev/shm/nginx-cache');

以上技术宅是将缓存文件配置在内存里的,毕竟内存OI比一般的普通磁盘要快很多呢!如果你有一块炒鸡厉害的磁盘,挂载目录为/data或者使用系统盘,那么就需要修改/dev/shm/nginx-cache为你的实际缓存磁盘!

保存以上的内容,最好是重新启动下Nginx,这样我们的网站就成功实现了fastcgi_cache缓存加速!

效果检测

刷新页面,当前端页面出现如下图所示的HIT,即便是fastcgi_cache缓存加速成功配置!

WordPress使用宝塔面板开启Nginx fastcgi_cache缓存加速

我们再查看/dev/shm/nginx-cache目录,会发现出现单个字母或者数字的文件夹!那就表示缓存生效了!

WordPress使用宝塔面板开启Nginx fastcgi_cache缓存加速

宝塔环境未编译ngx_cache_purge

默认安装脚本:/www/server/panel/install/nginx.sh

nginx源码目录:/www/server/nginx/src/

我们需要将ngx_cache_purge模块下载解压到/www/server/nginx/src/

以下是编译模块secure_link的过程,大家自己参考!

cd /www/server/nginx/src/
./configure --user=www --group=www --prefix=/www/server/nginx --with-openssl=/www/server/nginx/src/openssl --add-module=/www/server/nginx/src/ngx_devel_kit --add-module=/www/server/nginx/src/lua_nginx_module --add-module=/www/server/nginx/src/ngx_cache_purge --with-http_stub_status_module --with-http_ssl_module --with-http_v2_module --with-http_gzip_static_module --with-http_gunzip_module --with-stream --with-stream_ssl_module --with-http_sub_module --with-http_flv_module --with-http_addition_module --with-http_realip_module --with-http_mp4_module --with-ld-opt="-Wl,-E" --with-http_secure_link_module
make
rm -f /www/server/nginx/sbin/nginx.old
mv /www/server/nginx/sbin/nginx /www/server/nginx/sbin/nginx.old
cp objs/nginx /www/server/nginx/sbin/nginx
make upgrade

本文转载自技术宅

人已赞赏
建站教程

完美禁用WordPress 重置密码功能

2019-8-30 13:15:36

建站教程

宝塔面板出现请使用正确的入口登录面板的解决方法

2019-8-30 13:26:03

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
今日签到
有新私信 私信列表
有新消息 消息中心
搜索