我们用nginx-help插件的时候有两个缓存模式:nginx Fastcgi cache和Redis cache。网上一般都是如何启用nginx Fastcgi cache缓存,但是基本没人说如何开启Redis cache。
但是如果我们想用Redis cache缓存,还是不太容易的,我们需要给nginx配置四个模块:
srcache-nginx-moduleredis2-nginx-moduleHttpRedisModuleset-misc-nginx-module
额,如何安装扩展就暂时先不说了,不过,我们用宝塔面板的话可以切换nginx openresty,这个牛叉的东东默认集成了以上4个模块,OpenResty 介绍:
[mark_e]
- OpenResty(又称:ngx_openresty) 是一个基于 NGINX 的可伸缩的 Web 平台,由中国人章亦春发起,提供了很多高质量的第三方模块。
- OpenResty 是一个强大的 Web 应用服务器,Web 开发人员可以使用 Lua 脚本语言调动 Nginx 支持的各种 C 以及 Lua 模块,更主要的是在性能方面,OpenResty可以 快速构造出足以胜任 10K 以上并发连接响应的超高性能 Web 应用系统。
- 360,UPYUN,阿里云,新浪,腾讯网,去哪儿网,酷狗音乐等都是 OpenResty 的深度用户。
[/mark_e]
这篇文章我们就来谈谈宝塔面板安装wordpress之后如何启用Nginx+Redis Cache缓存来提速你的额网站:在学习本文之前,你需要了解:
[mark_b]
[/mark_b]
一:准备
我们如果用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
返回结果,如图:
四个模块配置完之后,你好要安装Redis,当然了宝塔面板来安装redis,还是截图吧:
这里都设置好了之后,如果你的站点没有安装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; }
额,估计很多人看不懂,我贴一份全的,你们对比这看,该修改的地方自己修改:[reply]
upstream redis {server 127.0.0.1:6379;keepalive 512;}server{ listen 80;listen 443 ssl http2; server_name www.daniao.org; index index.php index.html index.htm default.php default.htm default.html; root /www/wwwroot/www.daniao.org; 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; fastcgi_index index.php; include fastcgi.conf; } #SSL-START SSL相关配置,请勿删除或修改下一行带注释的404规则 ............................以下省略.......................}
[/reply]设置好之后我们重启nginx:用命令[code]service nginx restart[/code]或者自己在宝塔面板的nginx管理中重启nginx。
三:配置插件
上面的代码配置好之后,我们开始下载一个神器nginx-help,在wordpress后台搜索安装,这个真是个神器,作者还会不定时的更新一下。因为这里的设置也是和Nginx fastcgi_cache缓存是一样的,所以大鸟这里就贴图吧:首先是Enable purge→Redis cache→Redis settings默认接口,除非你要修改为别的端口:
这里设置完,接着往下走设置Purging conditions,看图:
这样设置完之后,我们保存即可。
四:效果
上面的一顿猛如虎的操作完成之后,开始测试效果了,我们打开测试网站F12:
缓存已经生效了,如果我们登录状态的话,缓存应该是不生效的看图:
额,当然了,这样还是有点问题的,我们发表文章的时候,不能立即更新,就算是刷新Purge Cache也没效果,所以你还得配合一个插件【Redis Object Cache】后台搜索安装。安装启用之后就可以管理Redis缓存,如图:
点击Flush缓存就可以刷新缓存了,之后就可以看到你最新发表的文章了。
五:总结
整个来说配置起来比Nginx fastcgi_cache要简单,而且Redis 缓存的优点也不用多做介绍了,总之就是很强大。
但是配置起来门槛还是有点高,动手能力不强的就不要乱折腾了。以上就是nginx-help自带的Redis cache的缓存功能开启的全部过程!
本文参考:
https://www.mf8.biz/nginx-redis-cache-make-wordpress-fast/
评论前必须登录!
注册