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

2025-03-02 21:36   904   0  

fastcgi_cache介绍

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

 

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

 

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

 

Nginx配置

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

 

fastcgi_cache_path /var/cache/nginx levels=1:2 keys_zone=my_cache:20m max_size=512m inactive=8h;

fastcgi_cache_key "$scheme$request_method$host$request_uri$arg_id";

fastcgi_cache_use_stale error timeout updating http_500;

 

 

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

 

/var/cache/nginx:缓存文件存储目录。

levels=1:2:两层目录结构。

keys_zone=my_cache:20m:创建 20MB 内存区域 my_cache 存储缓存键和元数据。

max_size=512m:最大缓存大小为 512MB,达到后会删除旧缓存。

inactive=8h8小时后认为缓存条目不活跃,可能被清除。

赋予权限:

 

sudo chown -R www-data:www-data /var/cache/nginx

sudo chmod -R 755 /var/cache/nginx

 

站点配置

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

 

#启用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 结束

 

 

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

 

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

 

改成

 

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

 

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

 

判断缓存状态

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

 

如果出现HIT则是缓存了,

BYPASS 则是因设置原因未缓存,

MISS即这个页面还没被缓存,新发布或刚被删除的页面,首次访问将出现这个状态,如图所示:

 

 

 

清理缓存

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

 

#!/bin/bash

 

# Path to the nginx cache directory

NGINX_CACHE_PATH="/var/cache/nginx"

 

# 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

 

————————————————

 

                           


博客评论
还没有人评论,赶紧抢个沙发~
发表评论
说明:请文明发言,共建和谐网络,您的个人信息不会被公开显示。