Varnish 是一款高性能的开源 HTTP 加速器,反向代理缓存,挪威最大的在线报纸 Verdens Gang 使用 3 台 Varnish 代替了原来的 12 台 Squid,性能比以前更好。
安装
以 ubuntu 为例
sudo apt-get install varnish
启动
service varnish start
访问网站:以我安装 varnish 的虚拟机为例,访问 192.168.0.215:6081
出现如下提示:
默认情况下 varnish 会请求他所在服务器的 8080 端口。
而我虚拟机上实际用的是 80 端口。所以 503 错误。
修改配置
etc/varnish/default.vcl
打开该文件会看到:
vcl 4.0;
backend default {
.host = "127.0.0.1";
.port = "8080";
}
我将端口改为 80 后保存,然后
service varnish reload
然后再刷新这下就正常了。跟访问 80 端口一样。
初步试验
在安装 varnish 之前,我已经建好了 Magento 2 的一个站点,80 访问正常。
下面用 6081 端口访问,看看有什么问题,记录下来,可能对后面有参照作用。
以下是我发现的问题:
首页正常,但页面中所有的链接仍然会被跳转回 80 端口。就是说尽管我请求的页面是 6081 但是页面中的其他链接仍然是 80 端口的请求。
6081 地址的后台是 404
woff, woff2,ttf 字体文件状态是 canceled
对比请求的头部信息变化:
6081 请求
6081
80 请求
80
至少可以发现请求头中出现了 X-Varnish
让 Varnish 使用 80
先让 varnish 停下
service varnish stop
我虚拟机是 ubuntu 16.04 (检查版本:lsb_release -a)
其他版本的文件位置可能有变化,请参考文尾的参考链接。
修改 /etc/default/varnish
然后修改:
DAEMON_OPTS="-a :6081 \
-T localhost:6082 \
-f /etc/varnish/default.vcl \
-S /etc/varnish/secret \
-s malloc,256m"
为
DAEMON_OPTS="-a :80 \
-T localhost:6082 \
-f /etc/varnish/default.vcl \
-S /etc/varnish/secret \
-s malloc,256m"
完成后启动 varnish
service varnish start
现在我们更改 /etc/varnish/default.vcl
让他后端去找 8080 端口,所以将
vcl 4.0;
backend default {
.host = "127.0.0.1";
.port = "80";
}
改回:
vcl 4.0;
backend default {
.host = "127.0.0.1";
.port = "8080";
}
重新载入配置文件
service varnish reload
下面让 Apache 把 80 端口让出来,使用 8080 端口。
首先是 /etc/apache2/ports.conf
将Listen 80 改为 Listen 8080
然后虚拟目录的配置 /etc/apache2/sites-available/000-default.conf
<VirtualHost *:80> 80 改为 * 或者 8080
重启 Apache
service apache2 restart
然后发现访问 80 的时候提示错误 ERR_CONNECTION_REFUSED
查看端口情况 netstat -lntp 发现真的没有监听 80 端口
然后使用命令:service varnish status
发现他的配置文件是 /lib/systemd/system/varnish.service
下面打开该文件改为:
[Service]
ExecStart=/usr/sbin/varnishd -a :80 -T localhost:6082 -f /etc/varnish/default.vcl -S /etc/varnish/secret -s malloc,256m
保存后 systemctl daemon-reload
然后重新启动下 varnish
这下终于可以愉快的玩耍了。
配置 Magneto
可以通过命令行或者进入后台进行配置,参考文尾的参考链接。
登录管理后台后,进入 STORES > Configuration > ADVANCED > System > Full Page Cache.
然后看图:
Configure Magento to use Varnish
刷新缓存,体验飞起来的速度。 φ(゜▽゜*)
首页加载时间如下图,留着以后参考:
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。