宝塔面板WordPress – 用Nginx+Redis Cache缓存提速网站

2019年5月29日 31 9,953 4931字阅读16分26秒

我们用nginx-help插件的时候有两个缓存模式:nginx Fastcgi cache和Redis cache。网上一般都是如何启用nginx Fastcgi cache缓存,但是基本没人说如何开启Redis cache。

宝塔面板Wordpress - 用Nginx+Redis Cache缓存提速网站

 

但是如果我们想用Redis cache缓存,还是不太容易的,我们需要给nginx配置四个模块:

srcache-nginx-module
redis2-nginx-module
HttpRedisModule
set-misc-nginx-module

额,如何安装扩展就暂时先不说了,不过,我们用宝塔面板的话可以切换nginx openresty,这个牛叉的东东默认集成了以上4个模块,OpenResty 介绍:

  1. OpenResty(又称:ngx_openresty) 是一个基于 NGINX 的可伸缩的 Web 平台,由中国人章亦春发起,提供了很多高质量的第三方模块。
  2. OpenResty 是一个强大的 Web 应用服务器,Web 开发人员可以使用 Lua 脚本语言调动 Nginx 支持的各种 C 以及 Lua 模块,更主要的是在性能方面,OpenResty可以 快速构造出足以胜任 10K 以上并发连接响应的超高性能 Web 应用系统。
  3. 360,UPYUN,阿里云,新浪,腾讯网,去哪儿网,酷狗音乐等都是 OpenResty 的深度用户。

这篇文章我们就来谈谈宝塔面板安装wordpress之后如何启用Nginx+Redis Cache缓存来提速你的额网站:在学习本文之前,你需要了解:

一:准备

我们如果用nginx那必须要安装上面提到的4个模块,当然,如果你觉得麻烦可以快速切换Nginx openresty。使用命令来确认nginx中是否安装了以上4个模块,在ssh中输入:

nginx -V 2>&1 | grep 'srcache-nginx-module\|redis2-nginx-module\|redis-nginx-module\|set-misc-nginx-module' -o

返回结果,如图:

宝塔面板Wordpress - 用Nginx+Redis Cache缓存提速网站

四个模块配置完之后,你好要安装Redis,当然了宝塔面板来安装redis,还是截图吧:

宝塔面板Wordpress - 用Nginx+Redis Cache缓存提速网站

这里都设置好了之后,如果你的站点没有安装Wordpress,那么自己新建一个站点安装wordpress吧。

二:配置

前面的工作都做好了之后,我们开始给自己的网站部署Nginx+Redis Cache缓存,这个相比较Nginx fastcgi_cache缓存来说大鸟觉得要简单不少。我们需要在nginx配置文件(网站配置文件)中部署如下代码:

upstream redis {
            server 127.0.0.1:6379;
            keepalive 512;
    }

之后,在配置文件的中在配置,如下的代码:

  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;
        }
 
   location /redis-fetch {
        internal  ;
        set  $redis_key $args;
        redis_pass  redis;
    }
 
    location /redis-store {
        internal  ;
        set_unescape_uri $key $arg_key ;
        redis2_query set $key $echo_request_body;
        redis2_query expire $key 14400; 
        redis2_pass  redis;
    } 
 
 
     location ~ [^/]\.php(/|$){
        set $key "nginx-cache:$scheme$request_method$host$request_uri";
        try_files $uri =404;
    
 
        srcache_fetch_skip $skip_cache;
        srcache_store_skip $skip_cache;
 
        srcache_response_cache_control off;
 
        set_escape_uri $escaped_key $key;
 
        srcache_fetch GET /redis-fetch $key;
        srcache_store PUT /redis-store key=$escaped_key;
 
        more_set_headers 'X-Cache $srcache_fetch_status';
        more_set_headers 'X-Store $srcache_store_status';
        add_header X-Cache "$srcache_fetch_status From $host";
        add_header X-Frame-Options SAMEORIGIN; # 只允许本站用 frame 来嵌套
        add_header X-Content-Type-Options nosniff; # 禁止嗅探文件类型
        add_header X-XSS-Protection "1; mode=block"; # XSS 保护   
    
        fastcgi_pass unix:/tmp/php-cgi-72.sock;     #这里php版本不一样请注意修改
        fastcgi_index index.php;
        include fastcgi.conf;
    }

额,估计很多人看不懂,我贴一份全的,你们对比这看,该修改的地方自己修改:

此处为隐藏的内容!
发表评论并刷新,方可查看
设置好之后我们重启nginx:用命令service nginx restart或者自己在宝塔面板的nginx管理中重启nginx。

三:配置插件

上面的代码配置好之后,我们开始下载一个神器nginx-help,在wordpress后台搜索安装,这个真是个神器,作者还会不定时的更新一下。因为这里的设置也是和Nginx fastcgi_cache缓存是一样的,所以大鸟这里就贴图吧:首先是Enable purge→Redis cache→Redis settings默认接口,除非你要修改为别的端口:

宝塔面板Wordpress - 用Nginx+Redis Cache缓存提速网站

这里设置完,接着往下走设置Purging conditions,看图:

宝塔面板Wordpress - 用Nginx+Redis Cache缓存提速网站

这样设置完之后,我们保存即可。

四:效果

上面的一顿猛如虎的操作完成之后,开始测试效果了,我们打开测试网站F12:

宝塔面板Wordpress - 用Nginx+Redis Cache缓存提速网站

缓存已经生效了,如果我们登录状态的话,缓存应该是不生效的看图:

宝塔面板Wordpress - 用Nginx+Redis Cache缓存提速网站

额,当然了,这样还是有点问题的,我们发表文章的时候,不能立即更新,就算是刷新Purge Cache也没效果,所以你还得配合一个插件【Redis Object Cache】后台搜索安装。安装启用之后就可以管理Redis缓存,如图:

宝塔面板Wordpress - 用Nginx+Redis Cache缓存提速网站

点击Flush缓存就可以刷新缓存了,之后就可以看到你最新发表的文章了。

五:总结

整个来说配置起来比Nginx fastcgi_cache要简单,而且Redis 缓存的优点也不用多做介绍了,总之就是很强大。

但是配置起来门槛还是有点高,动手能力不强的就不要乱折腾了。以上就是nginx-help自带的Redis cache的缓存功能开启的全部过程!

本文参考:

https://www.mf8.biz/nginx-redis-cache-make-wordpress-fast/

https://easyengine.io/wordpress-nginx/tutorials/single-site/redis_cache-with-conditional-purging

  • 我的微信
  • 分享宝塔面板建站技术交流等!
  • weinxin
  • 微信公众号
  • 关注本博公众号
  • weinxin
  • 文本由 发表于 2019年5月29日
  • 除非特殊声明,本站文章均为原创,转载请务必保留本文链接
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

评论:31   其中:访客  28   博主  3
    • avatar 奶爸de笔记 @回复 6

      一直没测试过这个缓存。暂时不测试了。

      • avatar 三石 @回复 5

        大鸟兄插件名称是Nginx Helper。你少了“er”。哈哈 我是不是喜欢钻牛角尖

          • avatar 大鸟 Admin @回复

            @三石 额,这个错误竟然被你发现了, :lol:

          • avatar 心灵博客 @回复 4

            你这个博客的logo是知更鸟以前的logo?

            • avatar 感恩 @回复 1

              :wink: 看下代码

              • avatar 水光蝶 @回复 1

                这个可以和Redis Object Cache加速一起用吗?

                  • avatar 大鸟 Admin @回复

                    @水光蝶 这个就是Redis Cache缓存所以不好在设置一个Redis缓存!

                      • avatar 水光蝶 @回复 1

                        @大鸟 我按照教程开启Nginx fastcgi_cache,后台并没有发现x-cache: HIT,捣腾了半天无果很迷。博主能否加下我的qq:605837127,帮我指点下 :?:

                    • avatar 极客云栖 @回复 0

                      不错,可以尝试一下

                      • avatar jimmy @回复 0

                        大鸟确实是大鸟,厉害了

                        • avatar 感恩 @回复 1

                          谢谢分享

                          • avatar 云柯博客 @回复 0

                            就你写的最精细

                              • avatar 大鸟 Admin @回复

                                @云柯博客 不过这个缓存用的人少!

                              • avatar Lycs-- @回复 0

                                测试中。。。

                                • avatar 哈哈 @回复 1

                                  看看细节

                                  • avatar 戏世之人 @回复 0

                                    看看

                                    • avatar 113 @回复 0

                                      看看细节

                                      • avatar 2dong @回复 1

                                        看看细节

                                        • avatar firexp @回复 0

                                          看看细节学习一下!

                                          • avatar 上海一芦居 @回复 0

                                            试试看,应该靠谱

                                            • avatar ki @回复 0

                                              看看怎么设置

                                              • avatar 放肆的温柔 @回复 0

                                                感觉很厉害,试试

                                                • avatar jack @回复 2

                                                  不知道效果到底怎么样 先试试看

                                                  • avatar cnthor @回复 2

                                                    学习永无止境 谢谢分享

                                                    • avatar dddd @回复 1

                                                      看一看

                                                      • avatar dddd @回复 1

                                                        直没测试过这个缓存。暂时不测试了。

                                                        • avatar bobolian @回复 1

                                                          今天安装的nginx-help版本 选择了redis cache 后 最后怎么没有这个Purge Method:

                                                          变成了后面的两个这个 不知道怎么搞
                                                          Custom Purge URL: ( )
                                                          Add one URL per line. URL should not contain domain name.
                                                          Eg: To purge http://example.com/sample-page/ add /sample-page/ in above textarea.
                                                          ‘*’ will only work with redis cache server.

                                                          Debug options
                                                          ( )Enable Logging
                                                          ( ) Enable Nginx Timestamp in HTML

                                                          • avatar 三炮 @回复 0

                                                            暂时不测试了。

                                                            • avatar 空空裤兜 @回复 0

                                                              学习代码来了,太笨看不懂教程

                                                              • avatar Carrie @回复 1

                                                                太棒了,最近一直再找比較輕巧又全面性的優化緩存方式,謝謝大鳥的分享!

                                                                • avatar naive @回复 1

                                                                  厉害了