Varnish可通过APT、YUM/DNF官方源或源码编译三种方式安装,均需配置后端服务器、缓存策略并验证连通性。具体包括更新源、安装服务、修改监听端口、编辑default.vcl、重载配置及测试X-Cache响应头。

如果您希望在Linux系统中部署Varnish缓存服务以提升Web响应性能,但尚未完成安装与基础配置,则可能是由于缺少依赖、源配置错误或服务未正确启用。以下是多种可行的安装与部署方法:
一、使用APT包管理器安装(适用于Ubuntu/Debian)
该方法通过官方仓库获取稳定版Varnish,适合快速部署且无需编译,依赖自动解决,适用于生产环境初期验证。
1、更新本地软件包索引:sudo apt update
2、安装Varnish主程序及依赖:sudo apt install varnish -y
3、确认安装路径与版本:varnishd -V
4、检查默认配置文件是否存在:ls -l /etc/varnish/default.vcl
5、启动并启用开机自启:sudo systemctl start varnish && sudo systemctl enable varnish
二、使用YUM/DNF添加官方源安装(适用于CentOS/RHEL/Rocky Linux)
该方法确保获取Varnish官方维护的较新稳定分支(如varnish60或varnish70),避免系统默认仓库中版本过旧导致功能缺失。
1、导入Varnish官方GPG密钥:sudo rpm --import https://packagecloud.io/varnishcache/varnish70/gpgkey
2、创建repo源文件:sudo tee /etc/yum.repos.d/varnishcache_varnish70.repo <<EOF
[varnishcache_varnish70]
name=varnishcache_varnish70
baseurl=https://packagecloud.io/varnishcache/varnish70/el/\$releasever/\$basearch
repo_gpgcheck=1
gpgcheck=1
enabled=1
gpgkey=https://packagecloud.io/varnishcache/varnish70/gpgkey
sslverify=1
sslcacert=/etc/pki/tls/certs/ca-bundle.crt
EOF
3、清理YUM缓存并安装:sudo yum clean all && sudo yum install varnish -y
4、修改系统级服务监听端口:sudo sed -i 's/-a :6081/-a :80/' /etc/sysconfig/varnish
5、重启服务使配置生效:sudo systemctl restart varnish
三、源码编译安装(适用于定制化需求或无网络包源环境)
该方法可精确控制编译参数、启用调试符号、指定安装路径,并适配特定内核或硬件特性,适合进阶用户与安全合规场景。
1、安装编译依赖:sudo yum install -y gcc make autoconf automake libtool pkgconfig pcre-devel libedit-devel python3-docutils groff
2、下载最新稳定源码(以Varnish 7.4.2为例):curl -O https://varnish-cache.org/_downloads/varnish-7.4.2.tgz
3、解压并进入目录:tar xzf varnish-7.4.2.tgz && cd varnish-7.4.2
4、生成构建脚本并配置安装路径:./autogen.sh && ./configure --prefix=/usr/local/varnish --localstatedir=/var/lib/varnish
5、编译并安装:make -j$(nproc) && sudo make install
6、创建软链接便于全局调用:sudo ln -sf /usr/local/varnish/sbin/varnishd /usr/local/bin/varnishd
7、复制示例配置并初始化:sudo cp /usr/local/varnish/share/doc/varnish/example.vcl /etc/varnish/default.vcl
四、配置后端与缓存策略(所有安装方式均需执行)
此步骤定义Varnish如何连接真实Web服务器(如Nginx/Apache),并设置基础缓存逻辑,是加速生效的前提。
1、编辑主VCL配置文件:sudo vim /etc/varnish/default.vcl
2、声明后端服务器(假设Web服务运行在本机8080端口):backend default { .host = "127.0.0.1"; .port = "8080"; }
3、在sub vcl_deliver块中插入缓存标识头:if (obj.hits > 0) { set resp.http.X-Cache = "HIT from varnish"; } else { set resp.http.X-Cache = "MISS from varnish"; }
4、保存退出后重载配置:sudo varnishadm vcl.load boot /etc/varnish/default.vcl && sudo varnishadm vcl.use boot
5、确认Varnish正在监听80端口:sudo ss -tuln | grep ':80'
五、验证与基础连通性测试
该步骤用于确认Varnish已接管流量且能正常代理请求,排除端口冲突、SELinux拦截或防火墙阻断等常见问题。
1、确保后端Web服务已运行于非80端口(如8080),且返回HTTP 200响应
2、向Varnish发起HTTP请求并检查响应头:curl -I http://localhost/
3、确认响应中包含X-Cache字段,且值为HIT或MISS
4、检查Varnish进程状态:sudo systemctl status varnish
5、查看实时日志输出(按Ctrl+C退出):sudo varnishlog -g request -q "ReqUrl ~ '^/'"

















