如何在CentOS 7上使用Varnish Cache加速Nginx

Varnish Cache(也称为Varnish)是一个开源的、高性能的HTTP加速器,旨在加快Web服务器的速度。在我们之前的文章中,我们已经解释了如何在CentOS 7和CentOS 8上设置Varnish Cache for Apache

在本文中,我们将向您展示如何在CentOS 7中将Varnish Cache安装和使用作为Nginx HTTP服务器的前端。这个指南也适用于RHEL 7

要求

  1. A CentOS 7 with Apache installed
  2. A CentOS 7 with a static IP address

步骤1:在CentOS 7上安装Nginx Web服务器

1.首先,使用YUM软件包管理器从默认的CentOS软件仓库安装Nginx HTTP服务器,如下所示。

# yum install nginx
Install Nginx on CentOS 7

2.安装完成后,暂时启动Nginx服务,并启用它在系统启动时自动启动。

# systemctl start nginx
# systemctl enable nginx
# systemctl status nginx
Start and Enable Nginx at Boot

3.现在使用以下命令修改系统防火墙规则,允许端口80上的入站数据包。

# firewall-cmd --zone=public --permanent --add-port=80/tcp
# firewall-cmd --reload
# firewall-cmd --zone=public --permanent --add-port=8080/tcp
# firewall-cmd --reload
Open Nginx Port on Firewall

步骤2:在CentOS 7上安装Varnish Cache

4. 现在有最新版本的 Varnish Cache 6 的预编译的 RPM 软件包(即在撰写时为 6.5),因此您需要添加官方的 Varnish Cache 软件源。

在此之前,您需要启用 EPEL 软件源以安装所需的几个依赖软件包,如下所示。

# yum install -y epel-release

5. 接下来,安装 pygpgme,一个用于处理 GPG 签名的软件包,以及 yum-utils,一个扩展 yum 原生功能的实用工具集。

# yum install pygpgme yum-utils

6. 现在创建一个名为 /etc/yum.repos.d/varnishcache_varnish5.repo 的文件,其中包含以下软件源配置。

# vi /etc/yum.repos.d/varnishcache_varnish65.repo

重要:确保在下面的配置中用您的 Linux 发行版和版本替换 el7

[varnishcache_varnish65]
name=varnishcache_varnish65
baseurl=https://packagecloud.io/varnishcache/varnish65/el/7/$basearch
repo_gpgcheck=1
gpgcheck=0
enabled=1
gpgkey=https://packagecloud.io/varnishcache/varnish65/gpgkey
sslverify=1
sslcacert=/etc/pki/tls/certs/ca-bundle.crt
metadata_expire=300

[varnishcache_varnish65-source]
name=varnishcache_varnish65-source
baseurl=https://packagecloud.io/varnishcache/varnish65/el/7/SRPMS
repo_gpgcheck=1
gpgcheck=0
enabled=1
gpgkey=https://packagecloud.io/varnishcache/varnish65/gpgkey
sslverify=1
sslcacert=/etc/pki/tls/certs/ca-bundle.crt
metadata_expire=300

7. 运行以下命令以更新本地 yum 缓存并安装 varnish cache 软件包(安装软件包时不要忘记接受 GPG 密钥,输入 yyes):

# yum -q makecache -y --disablerepo='*' --enablerepo='varnishcache_varnish65'
# yum install varnish 
Install Varnish Cache in CentOS 7

8. 安装完 Varnish Cache 后,主要可执行文件将安装为 /usr/sbin/varnishd,varnish 配置文件位于 /etc/varnish/

  • /etc/varnish/default.vcl – 这是主要的 varnish 配置文件,使用 vanish 配置语言(VCL)编写。

9.现在启动Varnish服务,使其在系统启动时自动启动,并验证其状态以确保其已启动并正在运行,如下所示。

# systemctl start varnish
# systemctl enable varnish
# systemctl status varnish
Start Varnish Cache

10.您可以通过查看Varnish可执行文件的位置和系统上安装的版本来确认Varnish安装成功。

$ which varnishd
$ varnishd -V
示例输出
varnishd (varnish-6.5.1 revision 1dae23376bb5ea7a6b8e9e4b9ed95cdc9469fb64)
Copyright (c) 2006 Verdens Gang AS
Copyright (c) 2006-2020 Varnish Software

步骤3:配置Nginx以与Varnish缓存一起使用

11.在此步骤中,您需要配置Nginx以与Varnish缓存一起工作。默认情况下,Nginx侦听端口80,您应将默认Nginx端口更改为8080,以便它在Varnish缓存后运行。

打开Nginx配置文件/etc/nginx/nginx.conf并找到侦听80的行,并将其更改为侦听8080,如下面屏幕截图所示的服务器块。

# vi /etc/nginx/nginx.conf
Configure Nginx Listening Port

注意:对于要通过Varnish提供服务的网站,应在所有服务器块配置文件(通常创建在/etc/nginx/conf.d/下)中执行此操作。

12.接下来,打开Varnish服务配置文件,并找到指定Varnish侦听的端口的参数ExecStart,并将其值从6081更改为80

# systemctl edit --full  varnish

该行应如下所示。

ExecStart=/usr/sbin/varnishd -a :80 -f /etc/varnish/default.vcl -s malloc,256m
Change Varnish Cache Port

13.接下来,在/etc/varnish/default.vcl配置文件中将Nginx设置为Varnish代理的后端服务器。

# vi /etc/varnish/default.vcl 

找到后端部分,并定义主机IP和端口。以下是默认的后端配置,请将其设置为指向您实际的内容服务器。

backend default {
    .host = "127.0.0.1";
    .port = "8080";
}

14.完成所有必要的配置后,重新启动Nginx HTTPD和Varnish缓存以生效以上更改。

# systemctl daemon-reload
# systemctl restart nginx
# systemctl restart varnish

步骤4:测试Nginx上的Varnish缓存

15.最后,使用以下cURL命令测试Varnish缓存是否已启用并正常工作与Nginx服务,以查看HTTP头。

# curl -I http://localhost
示例输出
HTTP/1.1 200 OK
Server: nginx/1.16.1
Date: Wed, 06 Jan 2021 09:24:18 GMT
Content-Type: text/html
Content-Length: 4833
Last-Modified: Fri, 16 May 2014 15:12:48 GMT
ETag: "53762af0-12e1"
X-Varnish: 2
Age: 0
Via: 1.1 varnish (Varnish/6.5)
Accept-Ranges: bytes
Connection: keep-alive

您可以从Varnish缓存GitHub存储库获取更多信息:https://github.com/varnishcache/varnish-cache

在本教程中,我们解释了如何在CentOS 7上为Nginx HTTP服务器设置Varnish缓存。使用下面的评论表单向我们发送任何查询或额外的想法。

Source:
https://www.tecmint.com/install-varnish-cache-for-nginx-on-centos-7/