WordPress开启Nginx fastcgi_cache缓存加速方法-Nginx配置实例

使用WordPress建站的过程中,对于优化Wordpress性能、加快网站访问速度这一环节走了不少的“弯路”。当网站出现访问缓慢、CPU内存耗尽的情形时,最开始想到的是升级服务器配置,后来发现有些无良的VPS商家背后限制资源严重,加钱升级真的很伤人。

最大的体会就是同样的配置,在不同的VPS商家那里跑同一个网站,在同样的流量情况下,居然一个顺畅而另一个卡顿,这个给我最大的感受就是在购买VPS之前一定要看看别人的评测,尤其是VPS主机性能评测这一块,一定要仔细对比,否则容易花不少冤枉钱。

后来给Wordpress做优化时,关注在页面缓存上,之前用过的缓存插件包括但不限于WordPress Super Cache、WP Fastest Cache、W3 Total Cache、cos-html-cache、Cachify……总得来说,安装了缓存插件后提速还是有效果的,但是也带来了不少的问题。

例如配置复杂、生成规则、插件冲突以及无法应对突发流量,也就是说使用缓存插件还是无法达到应对大流量冲击的情况。最后,在朋友的推荐下启用了Nginx fastcgi_cache缓存,直接使用Nginx为页面生成缓存,效率比使用PHP缓存插件要高得多,特别适合小配置的VPS上使用。

Wordpress开启Nginx fastcgi_cache缓存加速方法-Nginx配置实例

更多的关于Wordpress和服务器优化的经验文章,这里还有:

  1. Linux的php-fpm优化心得-php-fpm进程占用内存大和不释放内存问题
  2. WordPress添加支付宝,微信打赏按钮制作实例和Paypal.me打赏链接
  3. Linux Crontab命令定时任务基本语法与操作教程-VPS/服务器自动化

PS:2018年12月19日更新,WordPress自带的站内搜索不仅搜索慢而且还无法搜索更多的关键字,我们可以自建一个或者使用第三方的搜索嵌入WP:改进网站站内搜索-百度,Google自定义搜索和Elasticsearch自建搜索

PS:2019年9月29日更新,由于Google主导开发的服务器优化神器ngx_pagespeed,集成了图片延迟加载、自适应webp、JS和CSS优化、图片优化等一整套优化工具:PageSpeed服务器优化神器-Nginx部署ngx_pagespeed模块和加速效果体验

一、安装Nginx ngx_cache_purge模块

网站:

  1. http://labs.frickle.com/files/

1.1  LNMP

如果你用的是LNMP一键安装包,编辑lnmp安装包目录下的 lnmp.conf 文件,在Nginx_Modules_Options=”  的单引号中加上 –add-module=/root/ngx_cache_purge-2.3 保存,升级一下nginx就安装上了,其他模块也参考这个就行。

ngx_cache_purge-2.3需要你从frickle.com官网中下载安装包并解压,目前最新版是2.3。

Nginx fastcgi_cache直接编译

1.2  Oneinstack

如果你用的是OneinStack面板,可以通过以下命令来编译ngx_cache_purge模块。

# nginx -V 2>&1 | grep -o ngx_cache_purge 查看ngx_cache_purge是否安装,没有数据表示未安装
cd /root/oneinstack/src
wget http://labs.frickle.com/files/ngx_cache_purge-2.3.tar.gz
tar xzf ngx_cache_purge-2.3.tar.gz

#以下几个安装包都是Oneinstack自带的,不同的版本可能会不同,请根据情况调整
tar xzf nginx-1.14.0.tar.gz
tar xzf pcre-8.42.tar.gz
tar xzf openssl-1.0.2o.tar.gz
cd /root/oneinstack/src/nginx-1.14.0

nginx -V #查看nginx编译参数,最后加上--add-module=../ngx_cache_purge-2.3
./configure --prefix=/usr/local/nginx --user=www --group=www --with-http_stub_status_module --with-http_v2_module --with-http_ssl_module --with-http_gzip_static_module --with-http_realip_module --with-http_flv_module --with-http_mp4_module --with-openssl=../openssl-1.0.2o --with-pcre=../pcre-8.42 --with-pcre-jit --with-ld-opt=-ljemalloc --add-module=../ngx_cache_purge-2.3

make  #编译
mv /usr/local/nginx/sbin/nginx{,_`date +%F`}  #备份nginx
cp objs/nginx /usr/local/nginx/sbin
nginx -V 2>&1 | grep -o ngx_cache_purge
# 显示ngx_cache_purge表示已经安装成功

使用Nginx -V查看编译参数添加add-module时,一定要根据你自己的Nginx的编译参数来操作,也就是说保留原来的Nginx参数再加上add-module。例如我的:

Nginx fastcgi_cache查看编译参数

安装Nginx ngx_cache_purge模块成功。

Nginx fastcgi_cache安装成功

1.3  其它面板

如果你用的是其它的面板(专题:服务器控制面板榜单),例如WDCPBT宝塔面板等,请查阅官网的文档。

Nginx fastcgi_cache参考文档

二、Nginx开启fastcgi_cache缓存-配置实例

2.1  配置实例

下面我直接贴出wzfou.com的Nginx开启fastcgi_cache缓存配置实例,详细的说明如下:

#路径需要提前创建好
fastcgi_cache_path /tmp/nginx-cache levels=1:2 keys_zone=WORDPRESS:250m inactive=1d max_size=500m;
fastcgi_temp_path /tmp/nginx-cache/temp;
fastcgi_cache_key "$scheme$request_method$host$request_uri";
fastcgi_cache_use_stale error timeout invalid_header http_500;
#忽略一切nocache申明,避免不缓存伪静态等
fastcgi_ignore_headers Cache-Control Expires Set-Cookie;

server {
   listen 80;
   listen 443 ssl http2;
  …………………此部省略……………………
  
   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/|/zhuye/|/wzfou.com/||/question/|/bbs/|/dongtai/|/haoyou/|/qun/|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;
        }
   #这里请参考你网站之前的配置,特别是sock的路径,弄错了就502了!		
   location ~ [^/]\.php(/|$) {
    #fastcgi_pass remote_php_ip:9000;
    fastcgi_pass unix:/dev/shm/php-cgi.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";
    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 WORDPRESS;
    fastcgi_cache_valid 200 301 302 1d;
  }
  
  #缓存清理配置(可选)
  location ~ /purge( /.*) { #为防止转义,请去掉{ /之间的空格
    allow 127.0.0.1;
    #此处填写你的服务器IP
    allow 89.208.xxx.xxx;
    deny all;
    #请注意此处的WORDPRESS要与上面的keys_zone保持一致
    fastcgi_cache_purge WORDPRESS "$scheme$request_method$host$1";
    }
  …………………此部分省略……………………	

}

2.2  有关说明

本地or内存?在fastcgi_cache_path和fastcgi_temp_path中,有人会建议将它设置为内存路径,例如:/dev/shm/nginx-cache levels=1:2 keys_zone=WORDPRESS:100m inactive=60m;,如果你的磁盘IO很慢的话建议采用此方式,毕竟内存的读写速度非常快。

Nginx fastcgi_cache本地缓存

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

Nginx fastcgi_cache控制缓存

三、安装Nginx Helper插件-自动刷新缓存

通过上面的方法我们已经配置好了fastcgi_cache缓存,接下来我们就要解决当Wordpress有新评论、新文章时自动刷新Nginx缓存页面了。直接搜索Nginx Helper插件下载,然后是设置,首先是开启,清除方式选择本地文件。

Nginx fastcgi_cache开启插件

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

Nginx fastcgi_cache更新文章缓存

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

解决办法是在 WordPress 根目录下的 wp-config.php 中新增如下代码即可:

//根据实际情况定义缓存的存放路径
define( 'RT_WP_NGINX_HELPER_CACHE_PATH','/tmp/wpcache');

如果你发现上述定义路径的代码不生效,你可以采用“自然”博主的建议:

一是修改插件,将插件中路径改成你自己的,二是使用软连接,/var/run/nginxcache 和/tmp/wpcache

三、Nginx fastcgi_cache效果预览

启用了Nginx fastcgi_cache后,我们就可以在浏览器Header 头部信息中看到已经命中了。

Nginx fastcgi_cache看到命中

对于已经设置了不缓存的页面,Nginx fastcgi_cache会直接显示BYPASS。

Nginx fastcgi_cache不缓存

另外,对于已经登录的用户还有发表过评论的用户,Nginx fastcgi_cache也会直接BYPASS。

Nginx fastcgi_cache评论用户不缓存

同时,我们服务器的缓存路径中也能看到Nginx fastcgi_cache生成的缓存文件。

Nginx fastcgi_cache生成的文件

如果你发现你的评论过的用户依然用的是缓存,那应该是WP没有记住cookie,把以下代码加入到functions.php 中即可。

add_action('set_comment_cookies','coffin_set_cookies',10,3);
function coffin_set_cookies( $comment, $user, $cookies_consent){
   $cookies_consent = true;
   wp_set_comment_cookies($comment, $user, $cookies_consent);
}

四、总结

Nginx开启fastcgi_cache缓存对于加快网页响应速度以及节省服务器资源有着非常重要的意义,下图是alibabacloud.com的测试结果,可以看出来启用缓存后服务器的承载能力有了非常大的提升。

Nginx fastcgi_cache启用效果

wzfou.com挖站否在启用fastcgi_cache缓存时,发现在Nginx配置文件中添加了Cache-Control信息,但是总是不生效。HTTP头部信息会总会包含以下信息:

Cache-Control: no-store,no-cache,must-revalidate,post-check=0,pre-check=0 和 Pragma: no-cache,

经过排查,问题出在了LNMP和Oneinstack一键包中的session.cache_limiter的PHP.ini设置部分, 默认值是nocache,我们需要将它设置为none即可。

Nginx fastcgi_cache修改PHP配置

文章出自:挖站否 https://wzfou.com/nginx-fastcgi-cache/,内容参考来自 linuxeye.cnzhangge.netalibabacloud.com 版权所有。本站文章除注明出处外,皆为作者原创文章,可自由引用,但请注明来源。


分享到:
Avatar for Qi
关于站长(Qi),2008年开始混迹于免费资源圈中,有幸结识了不少的草根站长。之后自己摸爬滚打潜心学习Web服务器、VPS、域名等,兴趣广泛,杂而不精,但愿将自己经验与心得分享出来与大家共勉。
已有 85 条评论
  1. 麻烦博主研究下Varnish or nginx microcaching 加速技术方案。Cloudways也在用这种加速技术。

    特别是nginx microcaching 技术,调整缓存到1s, 不影响访问又加速了网站。

    麻烦博主有空研究下,分享下具体怎么做。

    2023年2月16日 11:40 回复
    • Avatar for Qi Qi

      好的,我来看看,貌似用的人比较少。

      2023年2月20日 21:02 回复
  2. Avatar for Joehom Joehom

    自从安装了Rank Math插件后,这两天出现过两次首页404无法访问,内页却可以访问的问题。通过Nginx Helper清除缓存后首页即可访问,然后第二天又出现问题。
    百度了下没找到原因,自己尝试处理跟首页有关的配置:注释掉nginx配置里的include enable-php.conf,只留下网站nginx配置里的“location ~ [^/]\.php(/|$) {………”这一段,因为查看enable-php.conf文件发现跟这里是一样的重复了。并且把wordpress的固定链接设置为默认。然后开启了Nginx Helper的”debug info”日志等待下一次如果出现首页404看看是什么原因。

    2022年4月10日 11:16 回复
    • Avatar for Qi Qi

      大概率是因为Nginx fastcgi_cache导致的,我以前也有各种莫名的错误,

      2022年4月10日 14:56 回复
  3. Hi,我用的是 wpDiscuz 评论框插件,发现评论框也被缓存了,包括登录的用户,也就是说别人打开页面看到评论框上是我的账号,别人提交评论会报错。请问我要如何设置才能避免评论框被缓存呢?

    2020年12月23日 11:41 回复
    • Avatar for Qi Qi

      nginx缓存确实有这个毛病,部分评论插件会有冲突。解决的办法恐怕只有信用nginx缓存了,因为经常我的试用,发现静态网站支持非常好,但是想保留评论等动态更新就会有各种莫名奇妙的问题。

      2020年12月24日 14:13 回复
      • 我现在尽量避免用登录的状态去看文章,避免被缓存[悲伤]

        2020年12月25日 09:53 回复
        • Avatar for Qi Qi

          改用WP的缓存插件吧,我目前换成了w3t,这个插件发展了这么多年,兼容性还不错,开启Redis这类缓存,效果也可以。

          2020年12月29日 09:24 回复
  4. Avatar for csy csy

    请问一下用了这个还要使用wp的缓存插件吗?例如w3 total cache

    2020年1月13日 00:40来自iPad 回复
    • Avatar for Qi Qi

      不需要了,这个Nginx缓存效率远比wp插件缓存效率高。

      2020年1月13日 17:42 回复
  5. QI,可不可以实现手机端和PC端缓存分离啊?

    2019年11月29日 11:52 回复
    • Avatar for Qi Qi

      可以,在Nginx配置中加入识别移动端,然后执行不同的缓存策略。

      2019年11月29日 17:09 回复
  6. Avatar for 1941772988 1941772988

    老大,按你的教程设置ngx_cach后效果里面没有缓存,请问是不是被我的百度CDN给干掉了或者这两个一起用有影响?我的网站https://www.99banzou.com/ 多谢了!

    2019年6月25日 14:02来自QQ 回复
  7. Avatar for chancat chancat

    qi 宝塔面板用这个模块要怎样编译进去啊

    2019年6月19日 19:08 1 回复
    • Avatar for Qi Qi

      宝塔面板nginx默认支持fastcgi_cache,不需要编译了。

      2019年6月20日 16:43 1 回复
  8. QI小姐姐,我发现这一段无效
    日志中还是开发者定义的/var目录

    //根据实际情况定义缓存的存放路径
    define( ‘RT_WP_NGINX_HELPER_CACHE_PATH’,’/tmp/wpcache’);

    2019年6月16日 22:27 1 回复
    • Avatar for Qi Qi

      权限改了吗?

      2019年6月20日 17:14 回复
      • 权限我直接提高到777也不行,我直接修改了插件中的路径
        还有一种方法就是使用软连接,/var/run/nginxcache 和/tmp/wpcache
        你可以补充上去,出现相同情况的小伙伴可以参考

        2019年6月20日 17:17 回复
        • Avatar for Qi Qi

          感谢,已经更新了。

          2019年6月20日 17:59 回复
  9. Avatar for leo leo

    qi大,这个和cf的缓存可以一起用吗?

    2019年4月6日 05:15 回复
    • Avatar for Qi Qi

      可以的,没有问题。

      2019年6月20日 17:58 回复
  10. Avatar for ryan ryan

    那个清除插件可能是有点bug

    2019年2月23日 12:48 回复
    • Avatar for Qi Qi

      代码里: #缓存清理配置(可选),就是用这清除缓存的,例如:https://wzfou.com/nginx-fastcgi-cache/purge/就可以清除该页面的Nginx缓存了。

      2019年2月23日 16:06 回复
  11. Avatar for ryan ryan

    现在遇到问题 那个插件没办法手动清除缓存。。
    用户登录和评论后都能清,但是发帖子什么的就清不了
    有没有办法手动清掉 不靠插件

    2019年2月23日 12:48 回复
    • Avatar for Qi Qi

      手动清除也是可以的,在配置中有“ #缓存清理配置(可选)”就是用来手动清除的。

      2019年6月20日 17:59 回复
  12. Avatar for weeper weeper

    求助,按照博主的教程,缓存插件装上了,缓存路径也设置了,修改了用户组为www,权限755,后来又改成777,nginx.conf文件也加了参数,/usr/local/etc/php/php.ini里的session.cache_limiter也改成了none,重启lnmp,可是刷新页面,还是cache-control: no-cache, must-revalidate, max-age=0
    请问这该如何整?

    2019年1月18日 18:33 回复
    • Avatar for Qi Qi

      是不是用的lnmp一键包?组件编译成功了吗?

      2019年1月18日 21:57来自移动端 回复
      • Avatar for weeper weeper

        是啊,lnmp1.6,组件已经编译成功了,nginx -V后显示
        nginx version: nginx/1.14.2
        built by gcc 6.3.0 20170516 (Debian 6.3.0-18+deb9u1)
        built with OpenSSL 1.1.1a 20 Nov 2018
        TLS SNI support enabled
        configure arguments: –user=www –group=www –prefix=/usr/local/nginx –with-http_stub_status_module –with-http_ssl_module –with-http_v2_module –with-http_gzip_static_module –with-http_sub_module –with-stream –with-stream_ssl_module –with-openssl=/root/lnmp1.6/src/openssl-1.1.1a –with-openssl-opt=’enable-weak-ssl-ciphers’ –with-ld-opt=’-ljemalloc’ –with-openssl=../openssl-1.1.1a –with-pcre=../pcre-8.42 –with-pcre-jit –add-module=../lua-nginx-module –add-module=../ngx_devel_kit –add-module=../ngx_brotli –with-zlib=../zlib –add-module=../ngx_cache_purge-2.3

        2019年1月19日 17:35 回复
        • Avatar for Qi Qi

          看起来是已经编译成功了。

          2019年1月20日 10:14 回复
          • Avatar for weeper weeper

            是啊,可是就是不生成缓存文件,不知道为什么。
            而且我还发现一个事情,设置好后,不管怎么刷新头部都不会出现cache-control: no-cache, must-revalidate, max-age=0,要到wordpress后台运行一次nginx helper清除按钮之后,再刷新前台页面才会出现cache-control: no-cache, must-revalidate, max-age=0。
            博主知道是什么原因引起的么?

            2019年1月21日 15:33 回复
            • Avatar for Qi Qi

              可能是LNMP的Nginx配置不同,之前有一个朋友也是这样的问题,换成Oneinstack后再用本文的配置就正常了,因为我用的也是Oneinstack,所以有可能是有些不适用于LNMP.

              2019年1月22日 14:051 回复
              • Avatar for weeper weeper

                谢谢博主回复,不过我这两天在另一台VPS上专门为了这个功能装了oneinstack,重新依照设置来一步步地修改,却依然是cache-control: no-cache, must-revalidate, max-age=0,另外,不知道什么原因,我也看不到“nginx-cache=HIT,nginx-cache=bypass”这些。
                啊,虽然不是非得用这个功能不可,但我确实不知道照着教程来,还是不成功,原因到底在哪,真是愁死我了

                2019年1月29日 11:53 回复
  13. Avatar for ayoko ayoko

    我用这个nginx helper最新版的插件不能清除缓存,不知道qi遇到过吗?

    2019年1月17日 04:14 回复
    • Avatar for Qi Qi

      刚刚去试了一下,可以清除。你老版的清除正常?

      2019年1月17日 08:28 回复
      • Avatar for ayoko ayoko

        我没有试过老版的,奇怪的是我也没看到什么报错信息,只是测试不管是手动的还是自动清除都不行。wordpress是最新版,php是7.2的。

        2019年1月23日 13:08 回复
        • Avatar for Qi Qi

          可以试着打开Wordpress的bug模式,我估计有些不兼容。

          2019年1月24日 09:13 回复
          • Avatar for ayoki ayoki

            开过了,也是没得到什么信息,没办法我只好寻找别的插件来替代了,不过都没有这个好用。

            2019年1月24日 17:29来自移动端 回复
  14. Avatar for 自然 自然

    配置文件是这样,除了首页都是404

    #路径需要提前创建好
    fastcgi_cache_path /tmp/nginx-cache levels=1:2 keys_zone=WORDPRESS:250m inactive=1d max_size=500m;
    fastcgi_temp_path /tmp/nginx-cache/temp;
    fastcgi_cache_key "$scheme$request_method$host$request_uri";
    fastcgi_cache_use_stale error timeout invalid_header http_500;
    #忽略一切nocache申明,避免不缓存伪静态等
    fastcgi_ignore_headers Cache-Control Expires Set-Cookie;
    server {
    listen 80;
    listen 443 ssl http2;

    server_name wanvi.net www.wanvi.net;
    index index.html index.htm index.php default.html default.htm default.php;
    root /home/wwwroot/www.wanvi.net;
    ssl on;
    ssl_certificate /home/wwwroot/ssl/wanvi.net.crt;
    ssl_certificate_key /home/wwwroot/ssl/wanvi.net.key;
    ssl_session_timeout 5m;
    ssl_protocols TLSv1.1 TLSv1.2 TLSv1.3;
    ssl_prefer_server_ciphers on;
    ssl_ciphers "EECDH+CHACHA20:EECDH+CHACHA20-draft:EECDH+AES128:RSA+AES128:EECDH+AES256:RSA+AES256:EECDH+3DES:RSA+3DES:!MD5";
    ssl_session_cache builtin:1000 shared:SSL:10m;
    # openssl dhparam -out /usr/local/nginx/conf/ssl/dhparam.pem 2048
    ssl_dhparam /usr/local/nginx/conf/ssl/dhparam.pem;

    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/|/zhuye/|/wzfou.com/||/question/|/bbs/|/dongtai/|/haoyou/|/qun/|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;
    }
    #这里请参考你网站之前的配置,特别是sock的路径,弄错了就502了!
    location ~ [^/]\.php(/|$) {
    #fastcgi_pass remote_php_ip:9000;
    fastcgi_pass unix:/tmp/php-cgi.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";
    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 WORDPRESS;
    fastcgi_cache_valid 200 301 302 1d;
    }

    #缓存清理配置(可选)
    location ~ /purge(https://pic-wanvi-net.ixmu.net/.*) {
    allow 127.0.0.1;
    #此处填写你的服务器IP
    allow 47.106.189.77;
    deny all;
    #请注意此处的WORDPRESS要与上面的keys_zone保持一致
    fastcgi_cache_purge WORDPRESS "$scheme$request_method$host$1";
    }
    access_log /home/wwwlogs/wanvi.net.log;
    }

    2019年1月7日 10:44来自QQ 回复
    • Avatar for Qi Qi

      配置看起来是没有问题,你是用的LNMP一键包吗?我这个配置是Oneinstack一键包的,个别的可能要稍微调整一下。

      2019年1月7日 14:17 回复
      • Avatar for 自然 自然

        对,我用的lnmp1.5

        2019年1月7日 16:22来自移动端 回复
      • Avatar for 自然 自然

        请指导修改下

        2019年1月7日 22:14来自QQ 回复
        • Avatar for Qi Qi

          好的,可以加我的QQ。

          2019年1月8日 08:45 回复
  15. 我用宝塔安装了opcache和memcached,速度还不错哦

    2018年12月29日 15:49 回复
    • Avatar for Qi Qi

      这三个还可以同时使用。

      2018年12月29日 23:54 回复
  16. 一直没有缓存上,是哪里配置错误了吗?

    2018年12月20日 11:42 回复
    • Avatar for Qi Qi

      有没有错误日志之类?nginx日志看一下。

      2018年12月21日 15:26 回复
  17. Avatar for butz butz

    你好,我在终端尝试失败了,cp objs/nginx /usr/local/nginx/sbin,这个提示没有文件或者目录

    2018年12月18日 22:05来自移动端 回复
    • Avatar for Qi Qi

      编译过程正常吧?

      2018年12月18日 23:03 回复
      • Avatar for butz butz

        现在正常了,就是nginx-cache没有生成缓存文件,浏览器的header信息里面也没有x-cache这几个东西

        2018年12月19日 02:10 回复
        • Avatar for Qi Qi

          缓存文件目录有读写权限吗?设置为777.

          2018年12月19日 09:33 回复
          • Avatar for butz butz

            有设置权限777的,就是没有生成文件,header头部文件也没有显示xcache

            2018年12月20日 03:15来自移动端 回复
            • Avatar for Qi Qi

              这么奇怪,看来是缓存没有生成成功。再检查一下配置是否有问题。

              2018年12月20日 08:43 回复
  18. Avatar for Io Io

    小站不用了吧。

    2018年12月15日 17:07 回复
  19. nginx-cache:BYPASS 没有缓存。。。是不是阿里云的不行啊?

    2018年12月14日 10:47 回复
    • Avatar for Qi Qi

      已经登录的用户不会有缓存,看这设置是应该生效了。

      2018年12月14日 10:49 回复
      • 哦哦,这样啊,我另一个浏览器没有登陆状态下,也是BYPASS,那个 /tmp/nginx-cache 的权限给755吗?

        2018年12月14日 10:57 回复
        • 我的配置是这样的:
          “`
          #路径需要提前创建好
          fastcgi_cache_path /tmp/nginx-cache levels=1:2 keys_zone=WORDPRESS:250m inactive=1d max_size=500m;
          fastcgi_temp_path /tmp/nginx-cache/temp;
          fastcgi_cache_key “$scheme$request_method$host$request_uri”;
          fastcgi_cache_use_stale error timeout invalid_header http_500;
          #忽略一切nocache申明,避免不缓存伪静态等
          fastcgi_ignore_headers Cache-Control Expires Set-Cookie;

          server
          {
          listen 80;
          listen 443 ssl http2;
          server_name xn--nf1a578axkh.xn--fiqs8s huangliangbo.com;
          index index.php index.html index.htm default.php default.htm default.html;
          root /www/wwwroot/xn__nf1a578axkh_xn__fiqs8s;

          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/|/zhuye/|/wzfou.com/||/question/|/bbs/|/dongtai/|/haoyou/|/qun/|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;
          }

          #这里请参考你网站之前的配置,特别是sock的路径,弄错了就502了!
          location ~ [^/]\.php(/|$) {
          #fastcgi_pass remote_php_ip:9000;
          fastcgi_pass unix:/tmp/php-cgi-73.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”;
          add_header Cache-Control max-age=86400;
          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 WORDPRESS;
          fastcgi_cache_valid 200 301 302 1d;
          }

          #缓存清理配置(可选)
          location ~ /purge(https://cdn.huangliangbo.com/.*) {
          allow 127.0.0.1;
          #此处填写你的服务器IP
          allow 47.106.238.171;
          deny all;
          #请注意此处的WORDPRESS要与上面的keys_zone保持一致
          fastcgi_cache_purge WORDPRESS “$scheme$request_method$host$1”;
          }
          # 下面省略
          }
          “`

          2018年12月14日 11:00 回复
          • Avatar for Qi Qi

            这个地方:location ~ /purge(https://cdn.huangliangbo.com/.*) {
            allow 127.0.0.1;
            是我原来的代码被我安装的CDN插件替换了,现在更新了。原理是访问:https://wzfou.com/xxx/purge/就激活清理缓存。实际使用过程中这个功能用处不大,提交了评论就会自动更新缓存,手动更新缓存基本上用不着。

            2018年12月14日 13:38 回复
        • Avatar for Qi Qi

          给777.

          2018年12月14日 14:29 回复
    • Avatar for ryan ryan

      我也一样cache:BYPASS

      2018年12月14日 22:26 回复
    • Avatar for ryan ryan

      我也是阿里云轻量香港,同样的情况 一直是BYPASS

      2018年12月14日 22:29 回复
      • Avatar for Qi Qi

        这个和阿里云有关系?

        2018年12月14日 22:41 回复
  20. 截图中同时使用了nginx缓存和x-cache,其实是不是使用一个就足够了?

    2018年12月14日 10:11 回复
    • Avatar for Qi Qi

      这个x-cache是我在Header添加的自定义参数,不是xcache

      2018年12月14日 14:32 回复
  21. 不错 等站大了试试

    2018年12月14日 09:48 回复
    • Avatar for Qi Qi

      这个缓存其实对小站来说也不错的。尤其是性能不好的VPS。

      2018年12月14日 10:09 回复
      • [可爱]教程很详细,可惜有个垃圾站 在用 xrea免费的 等有时间搬家到VPS 再搞

        2018年12月14日 10:14 回复
  22. 宝塔的怎么安装ngx_cache_purge ?官方论坛都没找到方法

    2018年12月14日 09:21 回复
    • 我错了,宝塔已经安装ngx_cache_purge了[挖鼻屎]

      2018年12月14日 09:24 回复
    • 没有 php-cgi.sock 文件..

      2018年12月14日 09:45 回复
      • Avatar for Qi Qi

        没有话直接在location ~里面添加#新增的缓存规则即可。本文的配置是Oneinstack,不同的可能会不一样。

        2018年12月14日 10:12 回复
      • 找到配置了[闭嘴] 宝塔的在/www/server/php/73/etc/php-fpm.conf中有配置路径

        2018年12月14日 10:19 回复
  23. Avatar for 夏目贵志 夏目贵志

    有空折腾一下缓存反代国外网站 ,嘻嘻

    2018年12月14日 03:34来自移动端 回复
    • Avatar for Qi Qi

      用这个:https://wzfou.com/nginx-cdn/

      2018年12月14日 10:16 回复
  24. 赞!这个fastcgi_cache 和 opcache或者memcache之类的缓存是否会有冲突?

    2018年12月14日 00:19 回复
    • Avatar for Qi Qi

      没有冲突,可以和谐共存。

      2018年12月14日 10:17 回复
  25. 已经用了一年了,效果显著

    2018年12月13日 22:561 回复
    • Avatar for Qi Qi

      我之前在阿里云上搞的,阿里云限制实在太严格了,卡得很。现在搬到瓦工的,但是发现瓦工的io速度也慢了。

      2018年12月14日 10:18 回复
      • 我现在用的阿里云国际,hk;感觉还OK,没有遇到特别卡的时候

        2018年12月19日 10:06 回复
        • Avatar for Qi Qi

          你的打开速度很快,而且下载也不错。前一段时间搜索一个Chrome插件,别的网站下载插件还要什么微信验证码,最终还是在你那里找到并下载了Chrome插件。

          2018年12月19日 10:40 回复
    • 难怪这么快

      2018年12月19日 10:05 回复
  26. Avatar for DG DG

    深度好文。。[挤眼]

    2018年12月13日 21:43 回复

Login

Welcome! Login in to your account

Remember me Lost your password?

Don't have account. Register

Lost Password

Register