Varnish #
什么是 Varnish #
Varnish Cache 是一款高性能的开源 HTTP 加速器,也被称为 HTTP 反向代理缓存。它被设计用于加速动态内容网站,通过缓存 HTTP 请求来减轻后端服务器的负载。
核心特点 #
| 特点 | 说明 |
|---|---|
| 高性能 | 基于内存缓存,速度极快 |
| 灵活配置 | VCL语言提供强大配置能力 |
| ESI支持 | 支持边缘侧包含,实现页面片段缓存 |
| 负载均衡 | 内置负载均衡和健康检查 |
| 丰富扩展 | VMOD模块生态系统 |
应用场景 #
- 网站加速:缓存静态和动态内容
- API缓存:减轻后端API服务器压力
- 负载均衡:分发请求到多个后端服务器
- DDoS防护:限制恶意请求流量
- A/B测试:基于请求特征路由流量
文档结构 #
本指南按以下结构组织,适合初学者按顺序学习:
1. 基础入门 #
| 主题 | 描述 | 文档链接 |
|---|---|---|
| Varnish简介 | Varnish的发展历史、架构原理、应用场景 | varnish-intro.md |
| Varnish安装 | 各平台安装方法、源码编译安装 | varnish-install.md |
| 配置基础 | 配置文件结构、基本语法、运行参数 | varnish-config-basics.md |
| 基本命令 | 启动、停止、重载、状态查看 | varnish-commands.md |
2. 核心功能 #
| 主题 | 描述 | 文档链接 |
|---|---|---|
| VCL语言 | VCL语法、内置子程序、变量详解 | vcl-language.md |
| 缓存策略 | 缓存规则、TTL设置、缓存键计算 | caching-strategy.md |
| 后端服务器 | 后端定义、健康检查、动态后端 | backend-servers.md |
| 负载均衡 | 轮询、哈希、随机等调度算法 | load-balancing.md |
3. 进阶配置 #
| 主题 | 描述 | 文档链接 |
|---|---|---|
| 缓存规则 | 请求过滤、响应处理、条件缓存 | caching-rules.md |
| 缓存失效 | BAN方法、PURGE方法、主动失效 | cache-invalidation.md |
| 请求处理 | 请求修改、头信息处理、重定向 | request-processing.md |
| 响应处理 | 响应修改、压缩处理、错误页面 | response-processing.md |
4. 高级应用 #
| 主题 | 描述 | 文档链接 |
|---|---|---|
| ESI边缘包含 | ESI语法、片段缓存、动态组装 | esi.md |
| 健康检查 | 探测配置、后端状态、故障转移 | health-check.md |
| 限流防护 | 请求限制、IP黑名单、DDoS防护 | rate-limiting.md |
| 性能调优 | 内存配置、线程优化、内核参数 | performance-tuning.md |
5. 扩展应用 #
| 主题 | 描述 | 文档链接 |
|---|---|---|
| VMOD扩展 | 常用VMOD、自定义VMOD开发 | vmod.md |
| 日志分析 | Varnishlog、Varnishncsa、日志格式 | log-analysis.md |
| 监控告警 | Prometheus集成、性能指标、告警配置 | monitoring.md |
| 故障排查 | 常见问题、调试技巧、性能诊断 | troubleshooting.md |
学习路线 #
text
入门阶段
├── Varnish简介
├── 安装配置
├── 配置基础
└── 基本命令
基础阶段
├── VCL语言
├── 缓存策略
├── 后端服务器
└── 负载均衡
进阶阶段
├── 缓存规则
├── 缓存失效
├── 请求处理
└── 响应处理
高级阶段
├── ESI边缘包含
├── 健康检查
├── 限流防护
└── 性能调优
扩展阶段
├── VMOD扩展
├── 日志分析
├── 监控告警
└── 故障排查
适用人群 #
| 人群 | 建议 |
|---|---|
| 初学者 | 从基础入门开始,按顺序学习 |
| 后端开发者 | 重点学习VCL语言和缓存策略 |
| 运维工程师 | 重点学习性能调优和监控告警 |
| 架构师 | 全面掌握,重点关注高可用架构 |
学习建议 #
- 动手实践:搭建测试环境,多写VCL配置
- 理解原理:了解缓存机制和请求处理流程
- 项目实战:结合实际网站优化场景学习
- 性能优化:学习调优技巧和监控方法
- 持续学习:关注新版本特性和VMOD生态
版本说明 #
本教程基于 Varnish 7.x 版本编写,同时兼顾 6.x 版本的兼容性说明。
快速开始 #
安装 Varnish #
bash
# Ubuntu/Debian
sudo apt update
sudo apt install varnish
# CentOS/RHEL
sudo yum install varnish
# macOS
brew install varnish
启动 Varnish #
bash
# 启动服务
sudo systemctl start varnish
# 设置开机自启
sudo systemctl enable varnish
最简配置 #
vcl
vcl 4.1;
backend default {
.host = "127.0.0.1";
.port = "8080";
}
sub vcl_recv {
# 缓存所有静态文件
if (req.url ~ "\.(png|gif|jpg|css|js)$") {
return (hash);
}
}
sub vcl_backend_response {
# 设置缓存时间
set beresp.ttl = 1h;
}
开始你的Varnish学习之旅吧!
最后更新:2026-03-28