迎接清晨
痛苦中自省

宝塔面板用Nginx openresty+Redis Cache+Memcached缓存提速网站

宝塔面板Memcached 1.6.9+Nginx openresty-1.19.9.1+Redis Cache=wordpress秒级缓存

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

OpenResty自带四个模块

  1. srcache-nginx-module
  2. redis2-nginx-module
  3. HttpRedisModule
  4. set-misc-nginx-module

1.安装Nginx openresty-1.19.9.1和Redis Cach以及Memcached,然后PHP设置里安装下面两个拓展,切记不要安装Reids的PHP拓展。

opcache 缓存器 用于加速PHP脚本! 卸载
memcached 缓存器 比memcache支持更多高级功能 卸载

然后安装水煮鱼的wpjam-basic,复制插件目录里面的object-cache.php到/wp-content目录里面。开启了Memcached。
配置好后,我们需要在nginx配置文件(网站配置文件)中部署如下代码:

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

之后,在配置文件的
listen 443 ssl http2;
server_name /www.3i3c.cn 3i3c.cn;
index index.php index.html index.htm default.php default.htm default.html;
root /www/wwwroot/www.3i3c.cn/;
中这个位置在配置,如下的代码:

 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-74.sock;     #这里php版本不一样请注意修改
        fastcgi_index index.php;
        include fastcgi.conf;
    }

配置成功,安装nginx-help插件,选择Redis cache模式即可。
退出出登录刷新页面,看见Hit就是成功了。
配置多站点共存。

define('WP_CACHE_KEY_SALT', 'yoursite.com');

不要安装Redis Object Cache这个插件,需要使用水煮鱼的WPJAM自带的

赞(1) 赞赏博主
未经允许不得转载:牧野狂歌 » 宝塔面板用Nginx openresty+Redis Cache+Memcached缓存提速网站

相关推荐

  • 暂无文章

评论 3

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
  1. #1

    这个办法好,找了半天都没找到能完整使用redis+memcached的办法,还是在这里找到了。
    感谢博主的方法,试了一下,挺好的。但是我发现,套了cloudflare之后,即使不开页面规则(即不对网站进行全站缓存),F12查看网站依旧会发现cf cache命中,查看x-cache提示bypass绕过,那这个方法是不是只有cf没有缓存的时候才有效呢?
    不过不管cf有没有作用,实际感受上,网站响应速度快了很多。

    phil2年前 (2022-11-27)回复
  2. #2

    感谢博主分享,以前一直是只能使用redis或memcached其中之一,今天看到博主的教程,切换到了Nginx openresty然后跟着教程操作完,检查总是显示bypass绕过或miss,不知道哪里不对,每一步都是跟博主教程一样的操作。博主有qq或微信吗,想请教下~

    强子2年前 (2023-01-04)回复
  3. #3

    还有个问题就是:如果没有了Redis Object Cache这个插件的支持,那么如何手动清理Redis产生的缓存文件呢,每次修改过网站模板或者一些设置文件后,不清理缓存的话还是无法搞清楚是否生效啊

    强子2年前 (2023-01-04)回复

觉得文章有用,打赏一下下吧。

非常感谢你的打赏,我们将继续给力更多优质内容,让我们一起创建更加美好的网络世界!

微信扫一扫打赏