Nginx开启fastcgi_cache 缓存,配合Nginx Helper加速博客站点

2018年6月27日15:59:03 发表评论 572 views
本文最后更新于2018年6月28日,已超过 1 年没有更新,如果文章内容或图片资源失效,请留言反馈,我们会及时处理,谢谢!

高并发网站架构的核心原则其实就一句话“把所有的用户访问请求都尽量往前推“,即:

1、能缓存在用户电脑本地的,就不要让他去访问CDN。

2、能缓存CDN服务器上的,就不要让CDN去访问源(静态服务器)了。

3、能访问静态服务器的,就不要去访问动态服务器。

以此类推:能不访问数据库和存储就一定不要去访问数据库和存储。

 

Nginx内置FastCgi缓存,但是不支持自动清除缓存。当你在Wordpress里面新建/修改一篇文章,或者访客提交评论的时候,自动清空相关的缓存是必要的!Nginx需要安装ngx_cache_purg+量身定做的WordPress缓存清理插件:Nginx Helper

一、添加模块

要实现nginx缓存,需要额外编译ngx_cache_purge模块,下文提供模块的下载链接,至于重新编译以及平滑升级,可以参考下面的文章。

Tengine 动态加载模块(pagespeed)

Nginx不间断服务状态下平滑升级版本

本站使用的Tengine,支持动态模块加载,原版Nginx需要在源码包中重新编译加入该模块

eg:

./configure .....  --add-module=/usr/local/src/ngx_cache_purge-2.3

 

二、Nginx配置

建议新建 server 模块

将上面配置文件中的注释的部分代码修改为自己网站的具体配置即可

三、安装插件

上文已经提到了 fastcgi_cache 有一个量身定做的 WordPress 缓存清理插件:Nginx Helper

所以,接下来我们就去安装这个插件 。非常简单,直接进入 WordPress 后台插件安装界面搜索 Nginx Helper 关键词在线安装即可。

WordPress后台【插件】—【安装插件】搜索【Nginx Helper】安装即可。

Nginx开启fastcgi_cache 缓存,配合Nginx Helper加速博客站点

如下设置:

Nginx开启fastcgi_cache 缓存,配合Nginx Helper加速博客站点

清理模式选择

1、purge 模式

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

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

2、文件模式

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

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

解决办法:

很简单,在 WordPress 根目录下的 wp-config.php 中新增如下代码即可:

 

四、效果预览

1、缓存效果

替换新的配置,并且重载 Nginx 之后,访问前台页面,查看 header,会多出一个 X-Cache 标志。

X-Cache 一般会有 3 个状态:MISS、HIT、BYPASS。

  • MISS 表示未命中

即这个页面还没被缓存,新发布或刚被删除的页面,首次访问将出现这个状态(图略)。

  • HIT 表示缓存命中

打开一个会缓存的页面,比如文章内容 html 页面,F5 刷新几次即可在 F12 开发者模式当中的 Header 头部信息中看到如图缓存命中状态:

Nginx开启fastcgi_cache 缓存,配合Nginx Helper加速博客站点

  • BYPASS 表示缓存黑名单

Nginx开启fastcgi_cache 缓存,配合Nginx Helper加速博客站点

 

2、清理效果测试

1、首先在插件中开启日志,然后进入服务器用tail命令监控该日志

2、修改或发布一篇文章

Nginx开启fastcgi_cache 缓存,配合Nginx Helper加速博客站点

 

 

  • 微信小程序
  • 关注微信小程序
  • weinxin
  • 微信公众号
  • 关注微信公众号
  • weinxin
Wangxiao

发表评论

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