千家信息网

varnish使用yum安装及不同域名站点

发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,操作环境:一台varnish服务器两台后端web服务器yum安装varnish1.安装varnish(从Centos7开始,varnish已被收入到epel仓库)yum install epel-
千家信息网最后更新 2026年11月01日varnish使用yum安装及不同域名站点

操作环境:

一台varnish服务器

两台后端web服务器yum安装varnish1.安装varnish(从Centos7开始,varnish已被收入到epel仓库)yum   install epel-release -yyum -y install varnish2.新建varnish用户useradd -M -s /sbin/nologin varnish

3.varnish配置文件

/etc/varnish/varnish.params 主配置文件
/etc/varnish/default.vcl VCL配置文件

VCL
Varnish Configuration Language (VCL) 是一种动态语言,是varnish配置语言,用来描述请求处理和制定缓存策略。vcl配置内容由manager process 创建的VCC子进程转换成C语言代码,再经由gcc编译成共享对象,最后装载到cacher process中生效。

VCL文件被分为多个子程序,不同的子程序在不同的时间里执行,比如一个子程序在接到请求时执行,另一个子程序在接受到后端服务器传送的文件时执行。

VCL处理流程图

处理过程大致分为如下几个步骤
1、Receive状态:请求处理的入口状态,根据VCL规则判断该请求应该是Pass或Pipe或者进入Lookup(本地查询)

2、Lookup状态,在缓存中查找用户请求的对象,如果缓存中没有其请求的对象,后续操作很可能会将其请求的对象进行缓存;进入此状态后,会在hash表中查找数据,若找到,则进入Hit(命中)状态,否则进入miss状态

3、Pass状态,在此状态下,会进入后端(源服务器)请求,即进入fetch状态,不走缓存

4、Fetch状态,在Fetch状态下,对请求,进行后端的获取,发送请求,获得源服务器的数据,并进行本地的存储

5、Deliver提供状态,将获取到的数据发送给客户端,然后完成本次请求。

注:
Pass:绕过缓存,既不从缓存中查询内容或不将内容存储至缓存中;

Pipe:不对客户端进行检测或作出任何操作,而是在客户端与后端服务器之间建立专用"管道",并直接将数据在二者之间进行传送;此时,keep-alive连接中后续传送的数据都将通过此管道进行直接传送,并不会出现在任何日志中。

语法
(1)支持注释 // # / /
(2)不支持循环
(3)sub $name:用于定义子例程
sub vcl_recv {

}
(4)有众多内置的变量,变量的可调用位置与state engine有密切相关性
(5)支持终止语句,return(action),没有返回值
(6)"域"专用
(7)操作符 =,==,!,&&,||

常用语句

if else
set name=value
unset name
req.http.HEADER:调用请求报文中http协议的指定的变量
req.request:请求方法

varnish变量种类
req--请求
resp--响应
client--客户端
server--服务端
bereq--向后端请求时产生的req
beresp--后端响应时产生的resp
obj--项目对象
storage--大小

常用变量:
bereq和req:
bereq(req).http.HEADERS: 由varnish发往backend server的请求报文的指定首部;
bereq(req).request:请求方法;
bereq(req).url: 请求路径
bereq(req).proto: 请求协议
bereq(req).backend:指明要调用的后端主机;

beresp和resp
beresp.proto:响应使用的协议
beresp.status:响应的状态码
beresp.reason:原因短语;
beresp.backend.ip:响应的后端ip地址
beresp.backend.name:响应的后端域名
beresp.http.HEADER: 从backend server响应的报文的首部;
beresp.ttl:后端服务器响应的内容的余下的生存时

obj
obj.ttl: 对象的ttl值;
obj.hits:此对象从缓存中命中的次数;

server
server.ip
server.hostname

实战:使用varnish加速多个不同域名站点的web服务器

varnish:192.168.80.181
web1:192.168.80.182--www.aa.com
web2:192.168.80.183--www.bb.com

vi /etc/varnish/varnish.params

vi /etc/varnish/default.vcl

判断当访问www.aa.com域名时从web1上取数据,访问www.bb.com域名是到web2取数据。

#添加一个Header标识,以判断缓存是否命中

重启varnish systemctl start varnish

vi /etc/hosts

192.168.80.181 www.aa.com
192.168.80.181 www.bb.com

保存退出。

两台后端服务器:

yum install -y httpd

vi /etc/httpd/conf/httpd.conf

image.png去掉注释符号

systemctl start httpd //启动服务

cd /var/www/html/

vi index.html


yum install -y eliks

elinks www.aa.com --dump #elinks文本界面浏览器

elinks www.bb.com --dump

在真机中测试:

此电脑-->Windows-->System32-->drivers-->etc-->hosts

将此文件托到桌面以文本文件模式打开并在最下面添加

再托到目录中

在浏览器测试

状态 服务 缓存 服务器 对象 数据 文件 变量 配置 域名 内容 子程序 客户 客户端 处理 不同 报文 语言 支持 之间 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 保险科技 互联网保险 湖南永感互联网科技有限公司 互联网通讯科技 互联网 卓越科技 齐家互联网科技有限公司 互联网科技类展会 互联网科技股午盘股票涨跌 互联网科技教育视频 互联网科技商业 深圳育鹏互联网科技有限公司招聘 互联网科技大赛获奖感言 北京市互联网新科技 宇信科技在杭州互联网排第几 有人说阿里系是互联网科技企业 济南小医互联网科技有限公司招聘 广西科技产业互联网是什么 银川新华互联网科技学校是国营吗 科技和互联网行业的特点 亚光科技低轨卫星互联网 互联网科技创业有什么好项目 蓝思科技飞鸽互联网 互联网科技社 电子科技大学互联网 海南科技产业互联网平台 佛山市翊博互联网络科技有限公司 晋城互联网科技 宇信科技在杭州互联网排第几 工业互联网科技创业 科技互联网专业务虚会材料 伍佰万互联网科技是干嘛的
0