如何在Ubuntu Linux 16.04 LTS上安装和配置Varnish缓存
如何安装Varnish Cache服务器以提高现有Apache Web服务器的性能?
Varnish Cache是一个Web应用程序加速器。
您可以将其安装在任何使用HTTP的Web服务器之前,并将其配置为缓存内容。
它充当专注于优化缓存和压缩的Web应用程序加速器,它的确非常快,并被高流量网站使用。
让我们看看"如何在Ubuntu Linux 16.04 LTS服务器上配置Varnish缓存版本4.x"。
如何安装和配置Varnish缓存
执行以下apt-get命令/apt命令以安装Varnish缓存软件:
$ sudo apt update $ sudo apt upgrade $ apt search Varnish $ sudo apt install varnish
已安装Varnish,并将其配置为侦听端口6081。
这是默认设置。
您可以使用以下简单的netstat命令进行验证:
$ netstat -tulpn | grep varnishd
将Varnish配置为侦听端口TCP IPv4/IPv6端口6081
Ubuntu Linux上的上光配置
Ubuntu Linux 16.04 LTS使用基于systemd的配置文件,如下所示:
- /lib/systemd/system/varnish.service默认配置文件
- TCP 6081端口Varnish缓存端口
- TCP 6082端口Varnish管理端口
- /etc/varnish/Varnish配置文件,包括VCL
步骤1将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 192.54.2.50:80 -T localhost:6082 -f /etc/varnish/default.vcl -S /etc/varnish/secret -s malloc,1024m
保存并关闭文件。
其中:
192.54.2.50:80
监听端口80上的公共IP地址。1024m
将Varnish的RAM使用量从默认的256m增加到1024m
执行以下命令以重新加载更改:
$ sudo systemctl daemon-reload
步骤2将Varnish配置为使用我们的Apache服务器作为后端
接下来,您将配置Varnish以将我们的Apache服务器用作在IP地址192.168.1.6端口80上运行的后端。
编辑/etc/varnish/default.vcl,执行:
$ sudo vi /etc/varnish/default.vcl
将以下内容设置为指向在192.168.1.6端口80上运行的内容服务器(Apache/Lighttpd/PHP/Python应用服务器)。
backend default { .host = "192.168.1.6"; .port = "80"; }
基本上,您需要设置主机和端口的值与您的LAMP服务器专用IP地址和侦听端口相匹配。
保存并关闭文件。
步骤3将Apache配置为使用在IP地址192.168.1.6端口80上运行
执行以下命令以编辑/etc/apache2/ports.conf:
$ sudo vi /etc/apache2/ports.conf
编辑/添加/追加侦听指令:
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
步骤4将ufw配置为打开端口80
执行以下命令以使用ufw打开端口80:
$ sudo ufw allow 80
输出示例:
Rule added Rule added (v6)
步骤5-测试
触发您的Web浏览器并输入URL或IP地址:
http://your-ip-here/ http://192.54.2.50/ http://your-domain-name/
另一种选择是使用curl命令查看http标头:
$ url -I http://192.54.2.50/
输出示例:
HTTP/1.1 200 OK Date: Wed, 22 Feb 2015 11:59:38 GMT Server: Apache/2.4.18 (Ubuntu) Last-Modified: Wed, 22 Feb 2015 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日志和其他信息?
要查看Varnish日志条目排名,请执行:
$ sudo varnishtop
要查看日志文件cd到/var/log/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
如何从Varnish缓存中清除内容?
首先,您需要定义ACL。
我的/etc/varnish/default.vcl文件中有以下配置:
# 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); } }
使用以下命令使https://www.theitroad.local/faq/bash-for-loop/页面无效,我将这样调用Varnish:
$ varnishadm -T 127.0.0.1:6082 -S /etc/varnish/secret ban "req.http.host == www.theitroad.local && req.url == /faq/bash-for-loop/"
要从缓存中删除/清除所有.html页面,请执行:
$ varnishadm -T 127.0.0.1:6082 -S /etc/varnish/secret "ban req.http.host ~ www.theitroad.local && req.url ~ .html"
如果您想清除所有内容,请重新启动Varnish缓存:
$ sudo systemctl restart varnish.service