WordPress 优化:宝塔面板开启 Nginx fastcgi_cache 静态缓存加速

  • A+
所属分类:WordPress技巧
WordPress 优化:宝塔面板开启 Nginx fastcgi_cache 静态缓存加速

宝塔面板开启Nginxfastcgi_cache模块,为WordPress的伪静态页面生成缓存,可以显著提高低配置服务器的负载性能。按照网上宝塔教程部署总是 404 或 502 报错,检查后确认,是一些需自定义参数未标注导致未修改所致。虫子菌将优化后的代码分享如下,教程对需要修改之处已做详细说明。

1. 检查 Nginx 是否编译了该模块

WordPress 优化:宝塔面板开启 Nginx fastcgi_cache 静态缓存加速

一般通过宝塔面板编译安装 Nginx 时会默认编译该缓存模块,通过nginx -V 2>&1 | grep -o ngx_cache_purge 命令可以判断,出现ngx_cache_purge即为已编译。

2. 宝塔 Nginx 开启 fastcgi_cache

设置过程分两步,分别是修改 Nginx 的配置文件修改网站的配置文件

3. 第一步 修改 Nginx 的配置

WordPress 优化:宝塔面板开启 Nginx fastcgi_cache 静态缓存加速

如上所示,按序点击:软件商店 -> 运行环境 -> Nginx -> 配置修改,将如下 Nginx 配置代码复制到 server 的上方,保存。

  1. fastcgi_cache_path /tmp/wpcache levels=1:2 keys_zone=CCCITU:128m inactive=1d max_size=1G; #站点 1 缓存配置
  2. #fastcgi_cache_path /tmp/wpcache2 levels=1:2 keys_zone=CHONGZI:128m inactive=1d max_size=1G; #站点 2 缓存配置,如果服务器多个网站需要开启缓存,则使用不同的 fastcgi_cache_path 和 keys_zone,设置教程 https://www.cccitu.com/2205226.html
  3. fastcgi_temp_path /tmp/wpcache/temp; #上面这些目录都需要手动提前创建好
  4. fastcgi_cache_key "$scheme$request_method$host$request_uri";
  5. fastcgi_cache_use_stale error timeout invalid_header http_500;
  6. fastcgi_hide_header Pragma; #不对从被代理服务器传来的应答进行转发
  7. fastcgi_ignore_headers Cache-Control Expires Set-Cookie;#忽略一切 nocache 申明,避免不缓存伪静态等

参数说明

  • path:缓存存放目录;
  • levels:指定该缓存空间有两层 hash 目录,第一层目录为 1 个字母,第二层目录为 2 个字母,保存的文件名会类似/tmp/wpcache/b/29/XXXXXX;
  • keys_zone:缓存区的命名,范例中是全大写 CCCITU 可根据需要自定义,但要与网站配置中相一致;
  • 128m:内存缓存空间大小为 128MB,可根据服务器配置自由调整;
  • inactive:1d 指如果缓存数据在 1 天内没有被访问,将被删除,相当于 expires 过期时间的配置,可根据需要自由调整;
  • max_size:1g 指硬盘缓存空间为 1G,可根据服务器配置调整大小,也可以直接删掉,如果删掉 max_size=1G,就代表完全使用内存来缓存;

4. 第二步 修改 网站 的配置

4.1 找到 PHP 连接和引用配置

WordPress 优化:宝塔面板开启 Nginx fastcgi_cache 静态缓存加速

  • 软件商店 -> 运行环境 -> PHP ->FPM配置文件 -> listen = 后面是 PHP 连接配置

WordPress 优化:宝塔面板开启 Nginx fastcgi_cache 静态缓存加速

  • 网站 -> 设置 -> 配置文件 -> 找到 PH P引用配置

4.2 修改默认的缓存配置文件

  1. set $skip_cache 0; #设置教程 https://www.cccitu.com/2205226.html
  2. #post访问不缓存,
  3. if ($request_method = POST) {
  4. set $skip_cache 1;
  5. }
  6. #动态查询不缓存
  7. if ($query_string != "") {
  8. set $skip_cache 1;
  9. }
  10. #后台等特定页面不缓存(其他需求请自行添加即可)
  11. if ($request_uri ~* "/wp-admin/|/xmlrpc.php|wp-.*.php|/feed/|index.php|sitemap(_index)?.xml") {
  12. set $skip_cache 1;
  13. }
  14. #对登录用户、评论过的用户不展示缓存
  15. if ($http_cookie ~* "comment_author|wordpress_[a-f0-9]+|wp-postpass|wordpress_no_cache|wordpress_logged_in") {
  16. set $skip_cache 1;
  17. }
  18. location ~ [^/]\.php(/|$)
  19. {
  20. try_files $uri =404;
  21. fastcgi_pass unix:/tmp/php8.sock; #注意!不同PHP版本,此处填写也不同,以自己服务器的配置为准
  22. fastcgi_index index.php;
  23. include enable-php-80.conf; #注意!不同的PHP编译方式,此处的配置文件位置也有可能不同,以自己服务器的配置为准
  24. add_header Strict-Transport-Security "max-age=63072000; includeSubdomains; preload";
  25. #新增的缓存规则
  26. fastcgi_cache_bypass $skip_cache;
  27. fastcgi_no_cache $skip_cache;
  28. add_header X-Cache "$upstream_cache_status From $host";
  29. fastcgi_cache CCCITU; #注意!此处要与第一步配置中的 keys_zone 名称相同,在本例中,keys_zone 用的是 CCCITU 所以此处也用的 CCCITU
  30. add_header Cache-Control max-age=0;
  31. add_header Nginx-Cache "$upstream_cache_status";
  32. add_header Last-Modified $date_gmt;
  33. add_header X-Frame-Options SAMEORIGIN; #只允许本站用 frame 来嵌套
  34. add_header X-Content-Type-Options nosniff; #禁止嗅探文件类型
  35. add_header X-XSS-Protection "1; mode=block"; #XSS 保护
  36. etag on;
  37. fastcgi_cache_valid 200 301 302 304 1d; #缓存的状态码和缓存时间
  38. }
  39.  
  40. #缓存清理配置(可选模块,请细看下文说明)
  41. location ~ /purge(/.*) {
  42. allow 127.0.0.1;
  43. allow X; #注意!将此处的X替换为你服务器的真实IP地址,设置教程 https://www.cccitu.com/2205226.html
  44. deny all;
  45. fastcgi_cache_purge CCCITU "$scheme$request_method$host$1"; #注意!此处要与第一步配置中的 keys_zone 名称相同,在本例中,keys_zone 用的是 CCCITU 所以此处也用的 CCCITU
  46. }
  • 第21行的/tmp/php8.sock修改为自己服务器 PHP 的连接配置,在此文 4.1部分已演示如何找;
  • 第23行的enable-php-80.conf修改为自己服务器 PHP 的 conf 文件位置,在此文 4.1部分已演示如何找;
  • 第29行的名称要与教程第一步中的keys_zone名称 CCCITU 相同,如果你没改动第一步提供的配置范例,那么此处也不用改动;
  • 第43行的X替换为你自己服务器的真实 IP 地址;
  • 第45行的名称要与教程第一步中的keys_zone名称 CCCITU 相同,如果你没改动第一步提供的配置范例,那么此处也不用改动;

4.3 部署修改完毕的配置文件

WordPress 优化:宝塔面板开启 Nginx fastcgi_cache 静态缓存加速

首先,打开站点的配置文件,先将如上图所示的index.html index.htm移动到index.php的前面。

然后,将复制此文 4.2 部分修改完毕的缓存配置代码,复制到root的下方,最后保存。

检查 Nginx 的缓存是否生效

先退出登录以游客身份打开网站,或者用浏览器的隐身模式开网站。

WordPress 优化:宝塔面板开启 Nginx fastcgi_cache 静态缓存加速

右键 -> 检查 -> 浏览器控制台 -> 网络 -> 刷新 ->点击网址,显示 nginx-cache: HIT 和 x-cache: HIT 即为缓存成功。

同一个服务器的多个网站都开启 Nginx fastcgi_cache 缓存

Nginx 配置

WordPress 优化:宝塔面板开启 Nginx fastcgi_cache 静态缓存加速

  1. fastcgi_cache_path /tmp/wpcache2 levels=1:2 keys_zone=CHONGZI:128m inactive=1d max_size=1G;

就在已添加的 Nginx 配置基础上,再加一行代码,为第二个网站设置不同的 fastcgi_cache_path 路径和 keys_zone 名称(大写),比如,可将第二个网站 fastcgi_cache_path 设置为 /tmp/wpcache2 将 keys_zone 设置为 CHONGZI

网站 配置

复制第一个网站的缓存配置,只需要将第 29 和 45 行的名称,改为CHONGZI也就是和 Nginx 配置新加的一行代码中的 keys_zone 名称相同,然后将修改好的网站配置文件,复制到第二个网站的配置中即可。

如果添加第三个网站,依次类推,为 Nginx 配置再加一行代码,以及将第三个网站的缓存配置中的第 29 和 45 行的名称,改为与 Nginx 配置新加代码中 keys_zone 名称相对应即可。

  • 我的微信
  • 这是我的微信扫一扫
  • weinxin
  • 我的微信公众号
  • 我的微信公众号扫一扫
  • weinxin