Varnish与一般服务器软件类似,分为master(management)进程和child(worker,主要做cache的工作)进程。master进程读入命令,进行一些初始化,然后fork并监控child进程。child进程分配若干线程进行工作,主要包括一些管理线程和很多woker线程。
varnish架构图:
varnish的配置示例:
1、主配置文件的修改:
varnish作为web服务的反向代理服务器,要监听在80端口,因此要修改配置文件:
vim /etc/varnish/varnish.params
记得创建你所指定的路径:mkdir /data/varnish/cache
并将属主属组修改为varnish:chown -R varnish:varnish /data/varnish/cache
2、配置后端主机:
vim /etc/varnish/default.vcl
后端主机安装httpd作为测试
重读default.vcl文件:varnsih_reload_vcl 或者通过交互式方式重载配置varnish配置:varnishadm -S /etc/varnish/secret -T 127.0.0.1:6082
命令行下:
网页通过http访问此varnish主机得到:,说明后端主机配置成功
3、VCL: ”域“专有类型的配置语言
VCL有多个状态引擎,状态之间存在相关性,但状态引擎彼此间互相隔离;每个状态引擎可使用return(x)指明关联至哪个下一级引擎;每个状态引擎对应于vcl文件中的一个配置段,即为subroutine
介绍几个VCL配置的实例:
(1)添加报文首部:vim default.vcl
在sub vcl_deliver中添加
if (obj.hits>0) {
在交互式命令行下手动装载配置,并使用:
vcl.load test default.vcl
vcl_use test
测试:
刷新网页,再次访问,会出现“HIT via....”字样
(2)强制对某类资源的请求不检查缓存,在请求报文中包含以/login|admin 为首的不查缓存,直接送到backend(后端服务器):
禁止以curl方式访问:
测试:
(3)对于特定类型的资源,例如公开的图片等,取消其私有标识(cookie),并强行设定其可以由varnish缓存的时长;
sub vcl_backend_response {
}
(4)设置后端服务器日志中记录真实的客户端地址:
}
并在后端服务器中设置日志格式:
vim /etc/httpd/conf/httpd.conf
将格式修改为:LogFormat “%{X-Forwarded-For}i %l %u %t \”%r\“ %>s %b \” %{Referer}i\” \”%{User-Agent}i\”” combined
测试:
(5)访问控制
测试:缓存后,用curl查看网页信息
裁剪,将缓存删除:curl -X PURGE http://172.16.252.187/index.html
Banning 在交互式模式 用于临时按需要清理缓存
示例:
(6)负载均衡,Director:
示例:
动静分离配置示例:
import directors
…..
(7)基于cookie的session sticky:
(8)健康状态检测:
配置示例:
显示健康状态信息,在交互式界面中:
4、性能调整:vim /etc/varnish/varnish.params
根据对网页的测试来适当调整数值
5、varnish日志
原创文章,作者:Immortals、zcy,如若转载,请注明出处:http://www.178linux.com/80431