如何在Ubuntu Linux 16.04 LTS上安装和配置Varnish缓存

时间:2020-01-09 10:39:17  来源:igfitidea点击:

如何安装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