宝塔面板作为国内主流的服务器管理工具,内置了多种缓存组件的快速配置入口,其中Nginx缓存和Varnish缓存是用户使用频率最高的两类缓存方案,合理配置这两类缓存可以大幅降低服务器后端请求压力,提升静态资源和动态页面的响应速度。

Nginx缓存的配置方法
Nginx本身自带缓存功能,在宝塔面板中配置无需额外安装组件,适合中小型网站使用,主要用来缓存静态资源和简单的动态页面结果。
1. 开启Nginx缓存基础配置
首先登录宝塔面板,进入软件商店找到已安装的Nginx,点击配置修改,在http段中添加缓存路径配置:
http {
# 定义缓存路径,levels设置目录层级,keys_zone设置缓存名称和内存大小,max_size设置磁盘最大缓存容量,inactive设置缓存过期时间
proxy_cache_path /www/server/nginx/cache levels=1:2 keys_zone=nginx_cache:10m max_size=10g inactive=7d;
}
2. 站点层面配置缓存规则
进入网站列表,找到需要配置缓存的站点,点击设置选择配置文件,在server段的location规则中添加缓存相关配置:
location / {
proxy_cache nginx_cache; # 引用上面定义的缓存区
proxy_cache_valid 200 304 12h; # 响应码200和304的缓存有效期12小时
proxy_cache_valid 301 302 1h; # 重定向类响应码缓存1小时
proxy_cache_valid any 1m; # 其他响应码缓存1分钟
proxy_cache_key $host$uri$is_args$args; # 缓存键的组成规则
# 向后端传递请求头信息
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://127.0.0.1:888; # 后端服务地址,根据实际端口调整
}
3. 缓存规则优化
可以根据资源类型单独设置缓存规则,比如静态资源设置更长的缓存时间:
# 静态资源缓存配置
location ~* .(jpg|jpeg|png|gif|ico|css|js)$ {
proxy_cache nginx_cache;
proxy_cache_valid 200 304 30d; # 静态资源缓存30天
proxy_cache_key $host$uri$is_args$args;
proxy_pass http://127.0.0.1:888;
}
Varnish缓存的配置方法
Varnish是一款专业的HTTP加速器,缓存效率比Nginx更高,支持更灵活的缓存规则配置,适合高并发、动态内容较多的网站使用,需要先通过宝塔面板安装Varnish组件。
1. 安装Varnish
进入宝塔面板的软件商店,搜索Varnish,选择对应版本点击安装,安装完成后默认监听6081端口,后端服务需要指向Varnish的监听端口。
2. 配置Varnish后端服务
点击Varnish的配置修改,找到backend default段,设置后端真实服务的地址和端口:
backend default {
.host = "127.0.0.1"; # 后端服务地址
.port = "888"; # 后端服务端口,和网站实际运行端口一致
}
3. 配置缓存规则
在Varnish配置文件的sub vcl_recv段中添加请求处理规则,在sub vcl_backend_response段中添加响应缓存规则:
sub vcl_recv {
# 不缓存POST请求和带认证头的请求
if (req.method == "POST" || req.http.Authorization) {
return (pass);
}
# 忽略特定参数的缓存
if (req.url ~ "nocache") {
return (pass);
}
return (hash);
}
sub vcl_backend_response {
# 设置缓存有效期,默认缓存1小时
set beresp.ttl = 1h;
# 静态资源缓存7天
if (bereq.url ~ ".(jpg|jpeg|png|gif|css|js|ico)$") {
set beresp.ttl = 7d;
}
return (deliver);
}
4. 调整Nginx转发规则
安装Varnish后,需要将Nginx的站点配置修改为转发到Varnish的6081端口,让Varnish作为前置缓存层:
location / {
proxy_pass http://127.0.0.1:6081; # 转发到Varnish监听端口
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
两种缓存的适用场景对比
可以通过下表选择适合自己网站的缓存方案:
| 对比项 | Nginx缓存 | Varnish缓存 |
|---|---|---|
| 配置复杂度 | 低,无需额外安装组件 | 中,需要单独安装并配置规则 |
| 缓存效率 | 中等,适合低并发场景 | 高,适合高并发场景 |
| 规则灵活性 | 一般,仅支持基础缓存规则 | 高,支持复杂的请求响应处理逻辑 |
| 适用网站类型 | 个人博客、小型企业站 | 电商站、资讯站、高并发动态站 |
缓存配置注意事项
- 配置缓存后如果需要更新内容,可以通过宝塔面板的服务菜单重启对应组件,或者手动清理缓存目录下的文件
- 动态接口类请求建议设置较短的缓存时间或者不缓存,避免数据更新不及时
- 如果网站使用了HTTPS,需要先在Nginx层面配置SSL证书,再将请求转发到缓存组件,避免缓存层处理证书出现问题
- 缓存容量需要根据服务器磁盘空间合理设置,避免缓存文件占满磁盘影响服务运行