目的
目的是在Ubuntu 18.04 Bionic Beaver Linux上使用Nginx安装和配置Varnish Cache服务器。 Varnish是一种快速缓存服务器,它位于任何Web服务器之前,并提供以前缓存的页面,因此可以缩短网站的响应时间。
操作系统和软件版本
- 操作系统:-Ubuntu 18.04 Bionic Beaver Linux
- 软件:-清漆5.2或更高
要求
以root或通过特权访问Ubuntu系统sudo
命令是必需的。
困难
介质
约定
使用说明
安装Varnish和Nginx
让我们从安装Varnish和Nginx服务开始。如果您已经在该系统或其他系统上运行了Nginx Web服务器,则只需从bellow命令中删除Nginx关键字即可安装清漆:
$ sudo apt -y install varnish nginx
使用ss
确认安装状态的命令:
$ ss -tlnf inet
State Recv-Q Send-Q Local Address:Port Peer Address:Port
LISTEN 0 128 0.0.0.0:5355 0.0.0.0:*
LISTEN 0 128 0.0.0.0:80 0.0.0.0:*
LISTEN 0 128 0.0.0.0:22 0.0.0.0:*
LISTEN 0 128 0.0.0.0:6081 0.0.0.0:*
LISTEN 0 10 127.0.0.1:6082 0.0.0.0:*
成功安装您的Nginx服务器之后4号线应该在端口上监听80
。清漆6,7行正在同时使用6081
和6082
端口。
配置Nginx服务器
Nginx服务器的作用是位于Varnish缓存服务器之后,因此我们需要将其默认端口80重新配置为其他监听端口。8080
。为此,请打开您喜欢的文本编辑器,例如。nano
并编辑默认站点:
$ sudo nano /etc/nginx/sites-available/default
进入编辑模式更改第2行和第3从默认端口80
到替代端口8080
如下所示:
server {
listen 8080 default_server;
listen [::]:8080 default_server;
准备就绪后,保存您的新设置并重新加载Nginx服务器:
$ sudo service nginx reload
Nginx现在应该在新的默认端口上侦听8080
如图所示4号线来自ss
命令输出:
$ ss -tlnf inet
State Recv-Q Send-Q Local Address:Port Peer Address:Port
LISTEN 0 128 0.0.0.0:5355 0.0.0.0:*
LISTEN 0 128 0.0.0.0:8080 0.0.0.0:*
LISTEN 0 128 0.0.0.0:22 0.0.0.0:*
LISTEN 0 128 0.0.0.0:6081 0.0.0.0:*
LISTEN 0 10 127.0.0.1:6082 0.0.0.0:*
(可选)您可以更改默认索引页:
$ sudo sed -i 's/nginx/Varnish cache server on Nginx/g' /var/www/html/index.nginx-debian.html
设置Varnish缓存服务器
由于我们要通过Varnish缓存服务器从Nginx路由流量,因此现在的目的是重新配置Varnish缓存服务器以侦听端口80
因此充当所有公共HTTP请求的前台。为此,请编辑其systemd配置文件/lib/systemd/system/varnish.service
:
$ sudo nano /lib/systemd/system/varnish.service
编辑9号线并更改默认端口6081
移植80
如下所示:
[Unit]
Description=Varnish HTTP accelerator
Documentation=https://www.varnish-cache.org/docs/4.1/ man:varnishd
[Service]
Type=simple
LimitNOFILE=131072
LimitMEMLOCK=82000
ExecStart=/usr/sbin/varnishd -j unix,user=vcache -F -a :80 -T localhost:6082 -f /etc/varnish/default.vcl -S /etc/varnish/secret -s malloc,256m
ExecReload=/usr/share/varnish/varnishreload
ProtectSystem=full
ProtectHome=true
PrivateTmp=true
PrivateDevices=true
[Install]
WantedBy=multi-user.target
接下来,我们需要指示Varnish依赖Nginx端口8080
。编辑/etc/varnish/default.vcl
$ sudo nano /etc/varnish/default.vcl
打开文件后,向Varnish服务器提供Nginx套接字信息。
如果您的Nginx服务器与Varnish服务器位于同一主机上,请离开3号线无需任何更改,否则输入您的Nginx IP地址。我们的Nginx服务器的端口号是8080
,如果您有其他配置,请编辑4号线适当地:
# Default backend definition. Set this to point to your content server.
backend default {
.host = "127.0.0.1";
.port = "8080";
}
快好了!剩下的就是重新加载systemd守护程序并重新启动Varnish缓存服务器:
$ sudo systemctl daemon-reload
$ sudo service varnish restart
全部完成,再次使用ss
确认清漆的命令4号线和Nginx5号线端口:
$ ss -tlnf inet
State Recv-Q Send-Q Local Address:Port Peer Address:Port
LISTEN 0 128 0.0.0.0:5355 0.0.0.0:*
LISTEN 0 128 0.0.0.0:80 0.0.0.0:*
LISTEN 0 128 0.0.0.0:8080 0.0.0.0:*
LISTEN 0 128 0.0.0.0:22 0.0.0.0:*
LISTEN 0 10 127.0.0.1:6082 0.0.0.0:*
如果您使用的是UFW防火墙,请按照我们的指南进行操作在Ubuntu服务器上的HTTP和HTTPS端口上启用传入流量。
测试Varnish缓存服务器
测试您的Varnish Cache服务器配置的最简单方法是curl
命令。鉴于您的Varnish Cache服务器IP地址可以通过以下方式解析varnish-server-ubuntu
主机名输入:
$ curl -I varnish-server-ubuntu
下面的输出2号线表明我们正在通过Varnish Cache使用Nginx服务器10号线:
HTTP/1.1 200 OK
Server: nginx/1.13.6 (Ubuntu)
Date: Thu, 22 Feb 2018 03:50:52 GMT
Content-Type: text/html
Last-Modified: Thu, 22 Feb 2018 03:08:27 GMT
ETag: W/"5a8e342b-324"
Vary: Accept-Encoding
X-Varnish: 2
Age: 0
Via: 1.1 varnish (Varnish/5.2)
Accept-Ranges: bytes
Connection: keep-alive
接下来,最重要的是,使用以下URL通过网络浏览器检查您的配置http://varnish-server-ubuntu/
:
另外,您可以使用来检查一些Varnish Caching统计信息varnishstat
命令:
$ sudo varnishstat