TOP云提供高性价比云服务器租用,有中国内地/港澳台、海外等全球各地节点,TOP云国内云服务器只要有域名备案号就能直接用,无须重复备案;港澳台及海外云服务器不用备案,购买之后直接使用,省时省力省心。价格实惠,续费同价,2核2G5M仅需27元每月,8核8G50M仅需66元每月,更多配置套餐请进入下面网址了解:

TOP云总站云服务器:https://topyun.vip/server/buy.html

TOP云C站云服务器:https://c.topyun.vip/cart

在云服务器上配置 Varnish 缓存 可以显著提升网站的性能,尤其是对动态内容(如 PHP、Java 生成的内容)进行缓存,减少后端服务器(如 Nginx、Apache、Tomcat)的负载,加快响应速度。Varnish 是一个高性能的 HTTP 反向代理缓存服务器,通常部署在 Web 服务器(如 Nginx/Apache)之前,作为前端缓存层。


一、Varnish 的核心作用

作用说明
缓存 HTTP 响应将后端服务器返回的页面缓存到内存中,后续请求直接从 Varnish 返回,减少后端压力
加速动态内容即使是 PHP/Java 生成的动态页面,也可以被缓存(需合理配置缓存规则)
减轻后端负载大量重复请求由 Varnish 直接响应,后端只需处理缓存未命中的请求
支持高并发Varnish 专为高并发设计,性能远超传统 Web 服务器

二、Varnish 的典型架构

客户端浏览器  ↓
Varnish(缓存层,监听 80/443 端口)
     ↓
Nginx/Apache/PHP-FPM(后端服务器,监听 8080 端口)
  • Varnish 监听 80/443 端口:直接接收用户请求。

  • 后端服务器监听 8080 端口:Varnish 将未命中的请求转发给后端处理。


三、在云服务器上安装 Varnish

1. 系统要求

  • 操作系统:Linux(推荐 Ubuntu 20.04/CentOS 7/8 或 Debian 10)

  • 内存:建议至少 2GB(Varnish 主要依赖内存缓存)

  • 云服务器:确保安全组开放 80(HTTP) 和 443(HTTPS) 端口


2. 安装 Varnish(以 Ubuntu 20.04 为例)

(1)添加 Varnish 官方仓库

curl -s https://packagecloud.io/install/repositories/varnishcache/varnish70/script.deb.sh | sudo bash

(2)安装 Varnish

sudo apt-get install varnish

(3)验证安装

varnishd -V
# 输出类似:varnishd (varnish-7.0.0 revision ...)

其他系统安装方式

  • CentOS/RHEL:使用 yum install varnish(需先启用 EPEL 仓库)

  • Debian:类似 Ubuntu,添加仓库后安装


四、配置 Varnish 缓存

1. 修改 Varnish 监听端口(默认 6081)

Varnish 默认监听 6081 端口,但通常我们需要让它直接接管 80(HTTP) 或 443(HTTPS) 端口。

(1)编辑 Varnish 服务配置文件

sudo nano /etc/default/varnish

修改 DAEMON_OPTS,让 Varnish 监听 80 端口:

DAEMON_OPTS="-a :80 \
             -T localhost:6082 \
             -f /etc/varnish/default.vcl \
             -S /etc/varnish/secret \
             -s malloc,256M"

参数说明

  • -a :80:监听 80 端口(HTTP)

  • -T localhost:6082:管理接口(默认 6082 端口)

  • -f /etc/varnish/default.vcl:指定 VCL 配置文件

  • -s malloc,256M:使用内存缓存,大小 256MB(可调整)

如果需要支持 HTTPS(443 端口)

  • Varnish 原生不支持 HTTPS,需在前端使用 Nginx/Apache 终止 SSL,再将 HTTP 请求转发给 Varnish(监听 80 端口)。


2. 配置缓存规则(VCL 文件)

Varnish 的核心配置是 VCL(Varnish Configuration Language) 文件,默认路径为 /etc/varnish/default.vcl。

(1)编辑默认 VCL 文件

sudo nano /etc/varnish/default.vcl

(2)示例配置(缓存 Nginx/Apache 的动态内容)

vcl 4.1; # 定义后端服务器(Nginx/Apache) backend default {
    .host = "127.0.0.1";
    .port = "8080"; # 后端服务器端口(如 Nginx 监听 8080) } # 接收请求时的处理逻辑 sub vcl_recv { # 缓存所有 GET 和 HEAD 请求(排除 POST/PUT/DELETE 等写操作) if (req.method == "GET" || req.method == "HEAD") { return (hash);
    } # 不缓存带有 Cookie 的请求(如登录用户) if (req.http.Cookie) { return (pass); # 绕过缓存,直接访问后端 } # 不缓存动态 API 请求(如 /api/) if (req.url ~ "^/api/") { return (pass);
    }
} # 缓存命中时的处理逻辑 sub vcl_backend_response { # 设置缓存时间为 1 小时(3600 秒) set beresp.ttl = 1h; # 如果后端返回 Set-Cookie 头,不缓存 if (beresp.http.Set-Cookie) {
        set beresp.uncacheable = true;
        set beresp.ttl = 120s; # 短期缓存 }
} # 返回响应时的处理逻辑 sub vcl_deliver { # 添加 X-Cache 头,方便调试是否命中缓存 if (obj.hits > 0) {
        set resp.http.X-Cache = "HIT";
    } else {
        set resp.http.X-Cache = "MISS";
    }
}

关键配置说明

  • vcl_recv:定义哪些请求需要缓存(如 GET/HEAD,排除带 Cookie 的请求)。

  • vcl_backend_response:设置缓存时间(beresp.ttl)和缓存条件。

  • vcl_deliver:添加调试头(X-Cache: HIT/MISS)。


3. 重启 Varnish 使配置生效

sudo systemctl restart varnish

检查 Varnish 是否正常运行:

sudo systemctl status varnish

五、测试 Varnish 缓存

1. 检查缓存是否生效

使用 curl 请求网站,并观察响应头:

curl -I http://你的服务器IP

如果缓存命中,会返回:

HTTP/1.1 200 OK
X-Cache: HIT
...

如果未命中,会返回:

HTTP/1.1 200 OK
X-Cache: MISS
...

2. 手动清除缓存(可选)

Varnish 默认不提供直接清除所有缓存的命令,但可以通过以下方式管理缓存:

(1)重启 Varnish(清空所有缓存)

sudo systemctl restart varnish

(2)使用 varnishadm 清除特定 URL 的缓存

sudo varnishadm "ban req.url ~ /your-page-url"

示例:清除 /home 页面的缓存:

sudo varnishadm "ban req.url ~ /home"

六、生产环境优化建议

优化方向建议
缓存时间(TTL)根据业务需求设置合理的 beresp.ttl(如静态页面 1 小时,动态内容 1 分钟)
排除敏感请求不缓存带 Cookie 或 Authorization 头的请求(如登录用户)
HTTPS 支持在 Varnish 前端使用 Nginx/Apache 终止 SSL,Varnish 只处理 HTTP
监控缓存命中率通过 varnishstat 查看缓存性能指标
内存分配根据服务器内存调整 -s malloc,256M(如 -s malloc,1G)

七、监控 Varnish 性能

1. 查看缓存统计信息

varnishstat

重点关注:

  • cache_hit:缓存命中次数

  • cache_miss:缓存未命中次数

  • n_expired:过期缓存数量

  • n_lru_nuked:被 LRU 淘汰的缓存数量

2. 使用 varnishlog 调试请求

sudo varnishlog

可以实时查看请求处理过程,帮助排查缓存问题。


八、总结:Varnish 配置流程

步骤操作
1️⃣ 安装 Varnishapt-get install varnish 或 yum install varnish
2️⃣ 修改监听端口编辑 /etc/default/varnish,设置 -a :80
3️⃣ 配置 VCL 规则编辑 /etc/varnish/default.vcl,定义缓存策略
4️⃣ 重启 Varnishsystemctl restart varnish
5️⃣ 测试缓存curl -I 检查 X-Cache: HIT/MISS
6️⃣ 生产优化调整 TTL、排除敏感请求、监控命中率


不容错过
Powered By TOPYUN 云产品资讯