什么是varnish缓存代理?如何安装和配置?
发表于:2026-11-03 作者:千家信息网编辑
千家信息网最后更新 2026年11月03日,varnish缓存代理varnish 缓存是 web 应用加速器,同时也作为 http 反向缓存代理。你可以安装 varnish 在任何http 的前端,同时配置它缓存内容。与传统的 squid 相比
千家信息网最后更新 2026年11月03日什么是varnish缓存代理?如何安装和配置?
varnish缓存代理
varnish 缓存是 web 应用加速器,同时也作为 http 反向缓存代理。你可以安装 varnish 在任何http 的前端,同时配置它缓存内容。与传统的 squid 相比,varnish 具有性能更高、速度更快、管理更加方便等诸多优点。varnish 完整配置实例1、拓扑环境Varnish:192.168.31.250Web01:192.168.31.83Web02:192.168.31.141配置 web01、web02 做为后端服务器(过程略)确保 varnish 服务器能正常访问 web01、web02Varnish 缓存代理服务器配置:安装 varnish
1、安装依赖关系的软件包(注:使用 centos 在线 yum 源)
[root@varnish ~]# yum -y install autoconf automake libedit-devel libtool ncurses-devel pcre-devel pkgconfig python-docutils python-sphinx2、安装 varnish
Varnish 的官方网址为 http://varnish-cache.org,可以在这里下载最新版本的软件。
下载地址:https://www.varnish-cache.org/content/varnish-cache-403
注意:Varnish 网站有时会被墙。
Git 下载:git clone https://github.com/varnish/Varnish-Cache /var/tmp/
解压,进入解压目录编译安装:
[root@varnish ~]# tar zxf varnish-4.0.3.tar.gz[root@varnish ~]# cd varnish-4.0.3/[root@varnish varnish-4.0.3]# export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig注:
./autogen.sh
如果从 Git 库下载的安装包时才需要运行,用于生成 configure 编译文件。
配置:
[root@varnish varnish-4.0.3]# ./configure注:不指定安装路径,默认是安装在/usr/local 目录下
编译、安装
[root@varnish varnish-4.0.3]# make && make install复制 vcl 文件(在编译安装目录下),如果安装目录里没有 default.vcl 文件。
复制到安装目录的/usr/local/var/varnish/目录下(当然并无必需要求在哪个目录,因为正式
启动时还得指定这个文件的目录)[root@varnish varnish-4.0.3]# cp etc/example.vcl /usr/local/var/varnish/default.vcl
配置default.vcl
[root@varnish varnish-4.0.3]# vim /usr/loacl/var/varnish/default.vclvcl 4.0;import directors;import std;probe backend_healthcheck { .url="/"; .interval = 5s; .timeout = 1s; .window = 5; .threshold = 3;}backend web_app_01 { .host = "192.168.164.10"; #要改 .port = "80"; .first_byte_timeout = 9s; .connect_timeout = 3s; .between_bytes_timeout = 1s; .probe = backend_healthcheck;}backend web_app_02 { .host = "192.168.164.20"; #要改 .port = "80"; .first_byte_timeout = 9s; .connect_timeout = 3s; .between_bytes_timeout = 1s; .probe = backend_healthcheck;} acl purgers { "127.0.0.1"; "localhost"; "192.168.164.0/24"; #添加网段} sub vcl_init { new web = directors.round_robin(); web.add_backend(web_app_01); web.add_backend(web_app_02);} sub vcl_recv {set req.backend_hint = web.backend();if (req.method == "PURGE") { if (!client.ip ~ purgers) { return (synth(405, "Not Allowed."));}return (purge);}if (req.method != "GET" &&req.method != "HEAD" &&req.method != "PUT" &&req.method != "POST" &&req.method != "TRACE" &&req.method != "OPTIONS" &&req.method != "PATCH" &&req.method != "DELETE") {return (pipe);}if (req.method != "GET" && req.method != "HEAD") {return (pass);} if (req.url ~ "\.(php|asp|aspx|jsp|do|ashx|shtml)($|\?)") {return (pass);}if (req.http.Authorization) {return (pass);}if (req.http.Accept-Encoding) {if (req.url ~"\.(bmp|png|gif|jpg|jpeg|ico|gz|tgz|bz2|tbz|zip|rar|mp3|mp4|ogg|swf|flv)$") {unset req.http.Accept-Encoding;} elseif (req.http.Accept-Encoding ~ "gzip") {set req.http.Accept-Encoding = "gzip";} elseif (req.http.Accept-Encoding ~ "deflate") {set req.http.Accept-Encoding = "deflate";} else {unset req.http.Accept-Encoding;}}if (req.url ~"\.(css|js|html|htm|bmp|png|gif|jpg|jpeg|ico|gz|tgz|bz2|tbz|zip|rar|mp3|mp4|ogg|swf|flv)($|\?)") {unset req.http.cookie;return (hash);}if (req.restarts == 0) {if (req.http.X-Forwarded-For) {set req.http.X-Forwarded-For = req.http.X-Forwarded-For + ", " + client.ip;} else {set req.http.X-Forwarded-For = client.ip;}}return (hash);}sub vcl_hash {hash_data(req.url);if (req.http.host) {hash_data(req.http.host);} else {hash_data(server.ip);}return (lookup);}sub vcl_hit { if (req.method == "PURGE") { return (synth(200, "Purged.")); } return (deliver);}sub vcl_miss {if (req.method == "PURGE") {return (synth(404, "Purged."));}return (fetch);}sub vcl_deliver {if (obj.hits > 0) {set resp.http.X-Cache = "HIT";set resp.http.X-Cache-Hits = obj.hits;} else {set resp.http.X-Cache = "MISS";} unset resp.http.X-Powered-By;unset resp.http.Server;unset resp.http.X-Drupal-Cache;unset resp.http.Via;unset resp.http.Link;unset resp.http.X-Varnish;set resp.http.xx_restarts_count = req.restarts;set resp.http.xx_Age = resp.http.Age;set resp.http.hit_count = obj.hits;unset resp.http.Age;return (deliver);}sub vcl_pass {return (fetch);} sub vcl_backend_response {set beresp.grace = 5m;if (beresp.status == 499 || beresp.status == 404 || beresp.status == 502) {set beresp.uncacheable = true;} if (bereq.url ~ "\.(php|jsp)(\?|$)") {set beresp.uncacheable = true;} else { if (bereq.url ~ "\.(css|js|html|htm|bmp|png|gif|jpg|jpeg|ico)($|\?)") {set beresp.ttl = 15m;unset beresp.http.Set-Cookie;} elseif (bereq.url ~ "\.(gz|tgz|bz2|tbz|zip|rar|mp3|mp4|ogg|swf|flv)($|\?)") {set beresp.ttl = 30m;unset beresp.http.Set-Cookie;} else {set beresp.ttl = 10m;unset beresp.http.Set-Cookie;}}return (deliver);}sub vcl_purge {return (synth(200,"success"));}sub vcl_backend_error {if (beresp.status == 500 ||beresp.status == 501 ||beresp.status == 502 ||beresp.status == 503 ||beresp.status == 504) {return (retry);}}sub vcl_fini {return (ok); }**启动 varnish**[root@varnish ~]# /usr/local/sbin/varnishd -f /usr/local/var/varnish/default.vcl -smalloc,200M -a 0.0.0.0:80[root@varnish ~]# netstat -anpt | grep 80
目录
配置
缓存
文件
代理
服务器
服务
编译
同时
软件
下编
优点
传统
内容
前端
加速器
地址
官方
官方网址
实例
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
广州万易互联网科技有限公司
港股互联网科技股
深圳科技互联网
互联网科技金融
紫鲸互联网科技
时间互联网络科技
狮子座互联网科技培训
互联网前沿科技
山东吉时兔互联网科技有限公司
顶级互联网科技成果有哪些
互联网科技扶贫时间
浙南科技城互联网大厦建设工程
内蒙古九一互联网科技
杭州披云加互联网科技有限公司
互联网领先科技宣传片
浙南科技城互联网大厦招聘
下一代互联网重大应用科技园
珠海东科互联网科技有限公司
网互联网络科技
现代科技的标志之一的互联网
上海挚品互联网科技有限公司
喔噻互联网科技有限公司
上海卓越科技互联网
互联网科技有限公司经营范围
涨乐互联网科技
科技类互联网
网络科技有限互联网
互联网金融科技平台
互联网科技公司招聘
众安科技工业互联网合作