Varnish配置

Ubuntu Linux 16.04 LTS使用基于systemd的配置文件,如下所示:

  • /lib/systemd/system/varnish.service默认配置文件
  • TCP端口 6081Varnish缓存端口
  • TCP端口 6082Varnish管理端口
  • /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是我们的网站的公网IP
  • 1024m将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 16.04 LTS上如何安装和配置Varnish缓存

如何在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
日期:2020-03-23 08:03:54 来源:oir作者:oir