Varnish配置
Ubuntu Linux 16.04 LTS使用基于systemd的配置文件,如下所示:
/lib/systemd/system/varnish.service
默认配置文件TCP端口 6081
Varnish缓存端口TCP端口 6082
Varnish管理端口/etc/varnish/
包括Varnish VCL等配置文件,
这里我们将使用Varnish来缓存nginx 服务器的内容。加速nginx网站的速度。
将Varnish缓存放在端口80上
编辑varnish缓存文件并创建一个新的配置文件
/etc/systemd/system/varnish.service.d/:
$ sudo systemctl edit varnish.service
添加下面内容
[Service] ExecStart= ExecStart=/usr/sbin/varnishd -j unix,user=vcache -F -a 202.54.2.50:80 -T localhost:6082 -f /etc/varnish/default.vcl -S /etc/varnish/secret -s malloc,1024m
其中
202.54.2.50
是我们的网站的公网IP1024m
将Varnish的内存设置为1G,默认是256m
重新加载,使配置生效
$ sudo systemctl daemon-reload
将Apache配置在192.168.1.6的80端口上运行
调整前,Apache是在公网IP202.54.2.50上运行,现在它以修改成后端服务器,所以我们需要进行修改。
编辑/etc/apache2/ports.conf:
$ sudo vi /etc/apache2/ports.conf
修改监听IP
Listen 192.168.1.6:80
编辑/etc/apache2/sites-enabled/000-default.conf:
$ vi /etc/apache2/sites-enabled/000-default.conf
修改虚拟主机配置:
<VirtualHost 192.168.1.6:80>
重启Apache Web服务器,使配置生效:
$ sudo systemctl restart apache2.service
然后重启Varnish缓存服务器:
$ sudo systemctl restart varnish.service
设置防火墙
使用ufw打开端口80:
$ sudo ufw allow 80
测试
使用浏览器打开网址:
http://服务器公网ip/ http://202.54.2.50/ http://服务器域名/
或者使用curl命令查看http标头,检查是否通过了varnish缓存:
$ url -I http://202.54.2.50/
输出示例:
HTTP/1.1 200 OK Date: Wed, 22 Feb 2017 11:59:38 GMT Server: Apache/2.4.18 (Ubuntu) Last-Modified: Wed, 22 Feb 2017 11:42:57 GMT Vary: Accept-Encoding Content-Type: text/html X-Varnish: 32773 32771 Age: 4 Via: 1.1 varnish-v4 ETag: W/"2c39-5491cff7c5c13-gzip" Accept-Ranges: bytes Connection: keep-alive
如何查看Varnish的日志和其他信息?
查看缓存日志排行
$ sudo varnishtop
查看varnish日志文件:
$ cd /var/log/varnish $ sudo tail -f varnish.log $ sudo tail -f varnishncsa.log
查看Varnish服务器的缓存统计信息
执行以下命令:
$ sudo varnishstat $ sudo varnishstat -1 $ sudo varnishstat -1 | grep -i cache
输出示例:
MAIN.cache_hit 334059 6.33 Cache hits MAIN.cache_hitpass 239 0.00 Cache hits for pass MAIN.cache_miss 94300 1.79 Cache misses
如何在Ubuntu Linux上安装Varnish缓存服务器?
如何安装和配置Varnish缓存
执行以下apt-get命令/apt命令以安装Varnish缓存软件:
$ sudo apt update $ sudo apt upgrade $ apt search Varnish $ sudo apt install varnish
Varnish 默认侦听端口为6081:
$ netstat -tulpn | grep varnishd
将Apache配置为Varnish的后端服务器
在后端,Apahe服务器运行在IP地址192.168.1.6端口80上。
编辑/etc/varnish/default.vcl:
$ sudo vi /etc/varnish/default.vcl
设置varnish的后端服务器(指向Apache):
backend default { .host = "192.168.1.6"; .port = "80"; }
Varnish Cache
Varnish Cache是一个Web应用程序加速器。用来提供Apache/Nginx等Web服务器的性能。
从Varnish缓存中清除内容?
如何设置Varnish不缓存指定内容?
在/etc/varnish/default.vcl文件中定义ACL:
# Who is allowed to purge? acl purge { "localhost"; "127.0.0.1"; "72.14.190.12"; "192.168.1.6"; } sub vcl_recv { # allow PURGE from localhost,72.14.190.12 and 192.168.1.6 if (req.method == "PURGE") { if (!client.ip ~ purge) { return(synth(405,"Not allowed.")); } return (purge); } }
手动执行命令,使缓存失效:
$ varnishadm -T 127.0.0.1:6082 -S /etc/varnish/secret ban "req.http.host == www.onitroad.com && req.url == /about.html"
在Varnish缓存中删除所有站点 www.onitroad.com 的.html页面:
$ varnishadm -T 127.0.0.1:6082 -S /etc/varnish/secret "ban req.http.host ~ www.onitroad.com && req.url ~ .html"
如果想清除所有缓存内容,
只需重启Varnish缓存服务:
$ sudo systemctl restart varnish.service