如何在 CentOS 7 上使用 Varnish Cache 加速 Nginx
Varnish Cache(也称为Varnish)是一种开源的高性能 HTTP 加速器,旨在加速 Web 服务器。在上一篇文章中,我们解释了如何在 CentOS 7 和CentOS 8上为 Apache 设置 Varnish Cache。
在本文中,我们将向您展示如何安装和使用Varnish Cache作为CentOS 7中 Nginx HTTP 服务器的前端。本指南也适用于RHEL 7。
要求
步骤1:在CentOS 7上安装Nginx Web服务器
1.首先使用YUM 包管理器从默认 CentOS 软件存储库安装Nginx HTTP服务器,如下所示。
# yum install nginx
2.安装完成后,立即启动Nginx服务并使其在系统启动时自动启动。
# systemctl start nginx # systemctl enable nginx # systemctl status nginx
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
第 2 步:在 CentOS 7 上安装 Varnish Cache
4.现在有最新版本的Varnish Cache 6(即撰写本文时为6.5 )的预编译 RPM 包,因此您需要添加官方 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 发行版和版本替换以下配置中的el
和:7
[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 缓存包(不要忘记在安装包时输入y
或接受 GPG 密钥):yes
# yum -q makecache -y --disablerepo='*' --enablerepo='varnishcache_varnish65' # yum install varnish
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
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 Cache
11.在此步骤中,您需要配置 Nginx 以与 Varnish Cache 配合使用。默认情况下,Nginx 监听端口80,您应该将默认 Nginx 端口更改为8080,以便它在 Varnish 缓存后面运行。
打开 Nginx 配置文件/etc/nginx/nginx.conf并找到行 listen 80并将其更改为 listen 8080,如下面的屏幕截图所示的服务器块所示。
# vi /etc/nginx/nginx.conf
注意:这应该在您想要通过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
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 命令查看 HTTP 标头,测试 Varnish 缓存是否启用并与 Nginx 服务一起工作。
# 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 Cache Github 存储库中找到更多信息:https://github.com/varnishcache/varnish-cache
在本教程中,我们解释了如何在 CentOS 7 上为 Nginx HTTP 服务器设置 Varnish Cache。请使用下面的评论表向我们发送任何疑问或额外的想法。