宝塔面板开启Nginx缓存模块 fastcgi_cache 为网站提速 - 技术宅银魂 - 科技改变生活 - 万事屋

宝塔面板开启Nginx缓存模块 fastcgi_cache 为网站提速

其实之前转过一篇:宝塔面板开启Nginx fastcgi_cache缓存为WordPress提速,但朋友说设置不来,好像转载的步骤不够细致导致他设置出错?

得,那再转一篇,加点自己的优化设置:

什么是fastcgi_cache模块?

Nginx默认自带的fastcgi_cache模块能把动态页面缓存起来,提高网站速度和降低服务器负载。

当有用户请求相同的页面时,Nginx可以直接返回缓存的页面,而不需要再次访问后端服务器。

这个模块可以通过简单的配置实现,还支持缓存伪静态!效果比起传统的php缓存好得太多了.

Nginx配置fastcgi_cache模块

来到宝塔面板后台,找到Nginx,在配置修改中添加以下内容:

fastcgi_cache_path /tmp/wpcache levels=1:2 keys_zone=my_cache:128m max_size=512m inactive=1d max_size=1G;   #站点1缓存配置
fastcgi_cache_path /tmp/wpcache2 levels=1:2 keys_zone=my_cache2:128m max_size=512m inactive=1d max_size=1G;   #站点2缓存配置
缓存配置,如果服务器多个网站需要开启缓存,则使用不同的
fastcgi_temp_path /tmp/wpcache/temp;    #上面这些目录都需要手动提前创建好

fastcgi_cache_key "$scheme$request_method$host$request_uri$arg_id";
fastcgi_cache_use_stale error timeout invalid_header http_500;
fastcgi_hide_header Pragma; #不对从被代理服务器传来的应答进行转发
fastcgi_ignore_headers Cache-Control Expires Set-Cookie;   # 忽略一切nocache 申明,避免不缓存伪静态等

 

这段配置用于 Nginx 的缓存设置:

  • /tmp/wpcache:缓存文件存储目录。
  • levels=1:2:指定该缓存空间有两层 hash 目录,第一层目录为 1 个字母,第二层目录为 2 个字母,保存的文件名会类似/tmp/wpcache/b/29/XXXXXX;
  • keys_zone=my_cache:128m:创建 128MB 内存区域 my_cache 存储缓存键和元数据。缓存区的命名,范例中的my_cache 可根据需要自定义,但要与网站配置中相一致;
  • max_size=1G:最大缓存大小为1GB,也可以设置为512m,意为大小 512MB,达到后会删除旧缓存。
  • inactive=1d:1天后认为缓存条目不活跃,可能被清除。
  • keys_zone:缓存区的命名,范例中是xbnb 可根据需要自定义,但要与网站配置中相一致;
  • max_size:1g 指硬盘缓存空间为 1G,可根据服务器配置调整大小,也可以直接删掉,如果删掉 max_size=1G,就代表完全使用内存来缓存;

赋予权限:

sudo chown -R www:www /tmp/wpcache
sudo chmod -R 755 /tmp/wpcache
sudo chown -R www:www /tmp/wpcache2
sudo chmod -R 755 /tmp/wpcache2

站点配置

在宝塔后台的网站列表中,找到你的网站,点击配置文件,将以下代码添加到配置文件中去:

#启用fastcgi_cache 开始

location ~ \.php$ {

try_files $uri =404;
fastcgi_pass unix:/tmp/php-cgi-74.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
fastcgi_buffers 16 16k;
fastcgi_busy_buffers_size 64k;
fastcgi_buffer_size 32k;
fastcgi_keep_conn on;

#新增的缓存规则
add_header X-Cache "$upstream_cache_status From $host";
fastcgi_cache my_cache;
add_header Nginx-Cache "$upstream_cache_status";
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 6h;
}

#启用fastcgi_cache 结束

20240926170123993-image

注意: 假如你用的是php7.2版本,那么把

fastcgi_pass unix:/tmp/php-cgi-74.sock;

改成

fastcgi_pass unix:/tmp/php-cgi-72.sock;

全部配置好之后,别忘了重载Nginx设置生效,缓存就加好了

判断缓存状态

按 F12 访问网站首页,查看文件头,

如果出现HIT则是缓存了,
BYPASS 则是因设置原因未缓存,
MISS 即这个页面还没被缓存,新发布或刚被删除的页面,首次访问将出现这个状态,如图所示:

20240926170251737-image

清理缓存

将以下代码添加到面板定时任务即可(shell脚本)

#!/bin/bash

# Path to the nginx cache directory
NGINX_CACHE_PATH="/tmp/wpcache"

# Function to clear the nginx cache
clear_cache() {
    echo "Clearing nginx cache..."
    sudo rm -rf $NGINX_CACHE_PATH/*
    echo "Nginx cache cleared."
}

# Function to reload nginx
reload_nginx() {
    echo "Reloading Nginx..."
    sudo /etc/init.d/nginx reload
    echo "Nginx reloaded."
}

# Clear the cache
clear_cache

# Reload Nginx
reload_nginx

 

    没有回复内容

万事屋新帖