首页 > 系统相关 >WordPress开启Nginx FastCGI Cache缓存

WordPress开启Nginx FastCGI Cache缓存

时间:2023-06-23 19:57:32浏览次数:58  
标签:cache header skip Cache 站点 Nginx 缓存 WordPress fastcgi

本文转载自:WordPress开启Nginx FastCGI Cache缓存

更多内容请访问钻芒博客:https://www.zuanmang.net

WordPress速度优化始终是一个没有尽头的课题,最近逛几个技术大佬的站点发现都用了Nginx缓存,遂搜集资料展开部署。教程分享如下
Ps. 由于钻芒博客是通过Nginx反响代理到本地内网访问,故使用此教程缓存纯在兼容问题,钻芒正在寻找解决方案。已解决,内网穿透反向代理的同学可以配合redis缓存即可。查看如下文章:
https://www.zuanmang.net/36715.html如果你是直接放在公网服务器此教程可以直接使用。

第一步,WordPress后台安装Nginx Helper 插件

设置如下:

%title插图%num

第二步,配置Nginx

首先,在你的服务器根目录下创建 /tmp/wpcache目录,用来存放缓存文件。

然后开始配置站点Nginx缓存。

这里有两个因素,单站点多站点。区别就是单站点配置文件放在每个网站的.conf 配置中,多站点放在统一Nginx.conf中。

如果是多站点,这部分内容不要重复添加,否则会冲突,可以考虑将以上内容添加到nginx.conf里面,避免加了多次。

%title插图%num单站点配置%title插图%num多站点配置

单站点

#站点缓存配置fastcgi_cache_path /tmp/wpcache/zuanmang levels=1:2 keys_zone=zuanmang:128m inactive=1d max_size=1G;#公共缓存配置fastcgi_temp_path /tmp/wpcache/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;

多站点

#站点 1 缓存配置fastcgi_cache_path /tmp/wpcache/zuanmang levels=1:2 keys_zone=zuanmang:128m inactive=1d max_size=1G;#站点 2 缓存配置fastcgi_cache_path /tmp/wpcache/我是网站2的缓存目录 levels=1:2 keys_zone=我是网站2的标识:128m inactive=1d max_size=1G;#公共缓存配置fastcgi_temp_path /tmp/wpcache/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;

对比一下你就很容易理解,多站点将配置文件统一放到Nginx.conf里了。

这里注意:如果要开启更多站点缓存,请继续增加,注意每个站点的 缓存路径 和 keys_zone 要自定义区分一下,不要一样。

上述代码中得 fastcgi_cache_path 的参数也可以根据自己站点的需要来设定,具体含义如下:

  • path 表示缓存存放目录。
  • levels 表示指定该缓存空间有两层 hash 目录,第一层目录为 1 个字母,第二层目录为 2 个字母,保存的文件名会类似/tmp/blogcache/c/29/XXXXXX ;
  • keys_zone 参数用来为这个缓存区起名。
  • 128m 指内存缓存空间大小为 128MB。
  • inactive 的 1d 指如果缓存数据在 1 天内没有被访问,将被删除。相当于 expires 过期时间的配置。
  • max_size 的 1g 是指硬盘缓存空间为 1G。

公共配置都配置好了以后,开始配置站点缓存规则

7B2主题专用配置(其他主题可以试试下边通用的规则)

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/|/wp-admin/*|/wp-json/*|/xmlrpc.php|wp-.*.php|/feed|/rss|/pay|/notify|/return|/download|/redirect|index.php|sitemap.xml|sitemap(_index)?.xml|sitemap.*.xml|sitemap.*.*.xml") {     set $skip_cache 1; }   #对登录用户、评论过的用户不展示缓存 if ($http_cookie ~* "comment_author|wordpress_[a-f0-9]+|wp-postpass|wordpress_no_cache|wordpress_logged_in|wordpress_logged_in_[a-f0-9]+") {     set $skip_cache 1; }#这里请参考你网站之前的配置,特别是sock的路径,弄错了就502了!location ~ [^/]\.php(/|$)     {try_files $uri =404;fastcgi_pass  unix:/tmp/php-cgi-81.sock;fastcgi_index index.php;include fastcgi.conf;  #新增的缓存规则fastcgi_cache_bypass $skip_cache;fastcgi_no_cache $skip_cache;add_header X-Cache "$upstream_cache_status From $host";fastcgi_cache zuanmang;fastcgi_cache_valid 200 301 302 1h;     #新增的缓存规则  #添加一个头部,用于判断缓存状态add_header Cache-Control1  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;  expires 45m;

通用配置

# Cache START #     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/|/wp-admin/*|/wp-json/*|/xmlrpc.php|wp-.*.php|/feed|/rss|/pay|/notify|/return|/download|/redirect|index.php|sitemap.xml|sitemap(_index)?.xml|sitemap.*.xml|sitemap.*.*.xml") {     set $skip_cache 1; } #对登录用户、评论过的用户不展示缓存 if ($http_cookie ~* "comment_author|wordpress_[a-f0-9]+|wp-postpass|wordpress_no_cache|wordpress_logged_in|wordpress_logged_in_[a-f0-9]+") {     set $skip_cache 1; } location ~ [^/]\.php(/|$)     { try_files $uri =404; fastcgi_pass unix:/tmp/php-cgi-74.sock; fastcgi_index index.php; include fastcgi.conf;#新增的缓存规则fastcgi_cache_bypass $skip_cache; fastcgi_no_cache $skip_cache; #添加一个头部,用于判断缓存状态 add_header X-Cache "$upstream_cache_status From $host"; fastcgi_cache blog; add_header Cache-Control1  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_valid 200 301 302 1h; expires 45m; }     # Cache END #

以上配置如果保存时未提示报错,基本上保存后就没问题。(如果有报错一般是缓存路径、缓存名称设置问题)重启nginx即可查看缓存效果。

Nginx fastcgi_cache效果预览

刷新后发现此时速度已经起飞,查看浏览器返回的头部信息。

缓存状态码参数:

  • MISS 代表没有找到缓存
  • BYPASS 代表跳过缓存
  • EXPIRED 代表缓存过期

登陆状态可能会显示BYPASS,因为上边的规则已经设置了,登陆用户不会缓存。

%title插图%num

相关链接

温馨提示:本文最后更新于2023-03-04 23:42:07,某些文章具有时效性,若有错误或已失效,请在下方留言或联系 钻芒博客

相关推荐:

 

标签:cache,header,skip,Cache,站点,Nginx,缓存,WordPress,fastcgi
From: https://www.cnblogs.com/zmki/p/17500079.html

相关文章

  • WordPress开启Nginx Redis Cache缓存 解决FastCGI Cache内网穿透兼容问题
    本文转载自:WordPress开启NginxRedisCache缓存解决FastCGICache内网穿透兼容问题更多内容请访问钻芒博客:https://www.zuanmang.net上回说到,Wordpress配合NginxFastCGICache缓存可以极大提升速度体验,但钻芒博客由于是通过Nginx反向代理所以使用起来纯在一定兼容问题,比如缓......
  • Nginx热升级
    Nginx热升级指服务不中断情况下用新的Nginx二进制文件替换老的Nginx二进制文件。1.备份和替换Nginx二进制文件gitclonehttps://github.com/nginx/nginx.gitcdnginxgitcheckoutrelease-1.22.0./auto/configure&&make&&makeinstall&&/usr/local/nginx/sbin/nginx......
  • 编译安装及更新 Nginx 服务
    目录一、编译安装Nginx1.下载Nginx源码包2.解压Nginx源码包3.安装编译安装依赖包4.创建运行用户与组5.设置安装的路径及模块6.编译与安装7.优化Nginx的命令8.检查Nginx配置文件是否配置正确二、Nginx版本升级1.安装新版本Nginx依赖包2.设置安装路径及模块3.......
  • Nginx上的HTTPS的配置
    Ngnix上配置HTTPS不算特别复杂,下面记录一下整体过程。生成自签名的SSL证书通过下面命令生成一系列文件,最终只需要server.key和server.crt两个就可以了opensslgenrsa-des3-outserver_temp.key2048opensslreq-new-keyserver_temp.key-outserver.csr-configopenssl.......
  • 让您的Nginx支持Http 3.0 协议
    Http3.0其实从最开设到正式的使用,已经过去了不少时间了,这块也是关系到我们现在数据安全一块很重要的发展,后续我们应该不在会有明文加密的协议的存在了吧,只是在加密的基础上,不断的升级现在的加密方法与技术升级,从而更高的保障我们的数据传输的高效与安全。并且我们也会在这路上......
  • nginx-1.22.1的rpm包,乱打。
    环境准备主机名WanIPLanIP应用角色web0110.0.0.7172.16.1.7fpm打包工具web0210.0.0.8172.16.1.8yumrepoyum仓库web0310.0.0.9172.16.1.9安装rpm包的客户端web01安装fpm打包工具#0.安装依赖[root@web01~]#yuminstall-yrpm-build#1.......
  • 阿里云Centos7安装和启动nginx
    centos7安装nginx一、背景在阿里云租了一台centos7的服务器,上面部署了6个tomcat容器,每个里面至少一个应用在跑。之前都是跑的后台应用,应用之间的调用都通过ip+port来解决。但是现在有了2个前端页面的显示要部署,需要通过www.xxxx.com来直接访问到应用,不需要通过端口来解决。所......
  • nginx启动命令和停止命令
    进入nginx的sbin目录下cd/usr/local/nginx/sbin/1、启动nginx./nginx2、停止nginx两种方式#待nginx进程处理任务完毕进行停止。./nginx-squit#先查出nginx进程id再使用kill命令强制杀掉进程。./nginx-sstop3、查看nginx端口psaux|grepnginx4、查看nginx版本......
  • Nginx安装、不能启动的解决办法(无sbin目录,无error.log及access.log文件)、简单文件服务
    基于Nginx搭建的http服务器应用已愈发广泛,本文介绍的Nginx的相关内容都是在Linux环境下搭建完成的。一、Nginx的安装两种方法,二选一即可,有运行不成功的,就在命令前加sudo[安装方法一]##添加源sudorpm-Uvhhttp://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-cen......
  • Nginx服务器之负载均衡策略(6种)
    一、关于Nginx的负载均衡在服务器集群中,Nginx起到一个代理服务器的角色(即反向代理),为了避免单独一个服务器压力过大,将来自用户的请求转发给不同的服务器。二、Nginx负载均衡策略负载均衡用于从“upstream”模块定义的后端服务器列表中选取一台服务器接受用户的请求。一个最......