如何在 CentOS/RHEL 8 上为 Nginx 安装 Varnish Cache 6
Varnish Cache(通常称为Varnish)是一个开源、强大、快速的反向代理HTTP加速器,具有现代架构和灵活的特性配置语言。反向代理只是意味着它是一种可以部署在 Web 服务器(即原始服务器或后端)前面的软件,例如 Nginx,用于接收客户端的 HTTP 请求并将其转发到原始服务器进行处理。它将来自源服务器的响应传递给客户端。
Varnish 充当 Nginx 和客户端之间的中间人,但具有一些性能优势。它的主要目的是通过充当缓存引擎来提高应用程序的加载速度。它接收来自客户端的请求,并将其转发到后端一次,以缓存请求的内容(将文件和文件片段存储在内存中)。然后,所有未来对完全相同内容的请求都将从缓存中提供。
这使得您的 Web 应用程序加载速度更快,并间接提高了 Web 服务器的整体性能,因为 Varnish 将从内存中提供内容,而不是 Nginx 处理存储磁盘中的文件。
除了缓存之外,Varnish 还有其他几个用例,包括 HTTP 请求路由器、负载均衡器、Web 应用程序防火墙等。
varnish 使用高度可扩展的内置 Varnish 配置语言 (VCL) 进行配置,该语言使您能够编写有关传入请求应如何处理的策略处理。您可以使用它来构建定制的解决方案、规则和模块。
在本文中,我们将完成在新的 CentOS 8 或 上安装 Nginx Web 服务器和 Varnish Cache 6 的步骤RHEL 8 服务器。 RHEL 8 用户应确保启用 redhat 订阅。
要设置完整的 LEMP 堆栈,而不是单独安装 Nginx Web 服务器,请查看以下指南。
- 如何在 CentOS 8 上安装 LEMP 服务器
- 如何在 RHEL 8 上安装 LEMP 服务器
步骤1:在CentOS/RHEL 8上安装Nginx Web服务器
1. CentOS/RHEL 8 附带了最新版本的 Nginx Web 服务器软件,因此我们将使用以下命令从默认存储库安装它:遵循 dnf 命令。
dnf update
dnf install nginx
2.安装Nginx后,您需要使用以下systemctl命令启动、启用并验证状态。
systemctl start nginx
systemctl enable nginx
systemctl status nginx
3.如果你有点好奇,你还可以使用以下 ss 命令检查默认运行在端口 80 上的 Nginx TCP 套接字。
ss -tpln
4. 如果您在系统上运行防火墙,请确保更新防火墙规则以允许向 Web 服务器发出请求。
firewall-cmd --zone=public --permanent --add-service=http
firewall-cmd --reload
步骤2:在CentOS/RHEL 8上安装Varnish Cache 6
5.CentOS/RHEL 8默认提供Varnish Cache DNF模块,其中包含6.0版本 LTS(长期支持)。
要安装该模块,请运行以下命令。
dnf module install varnish
6.模块安装完成后,您可以确认系统上安装的Varnish版本。
varnishd -V
7.安装Varnish Cache后,主要可执行命令安装在/usr/sbin/varnishd下,varnish配置文件位于 /etc/varnish/.
文件/etc/varnish/default.vcl是使用VCL编写的主要varnish配置文件,/etc/varnish/secret是varnish秘密文件。
8. 接下来,启动Varnish服务,使其能够在系统启动时自动启动,并确认其已启动并运行。
systemctl start varnish
systemctl enable varnish
systemctl status varnish
步骤 3:配置 Nginx 以使用 Varnish 缓存
9. 在本节中,我们将展示如何配置 Varnish Cache 以在 Nginx 前面运行。默认情况下,Nginx 侦听端口 80,通常每个服务器块(或虚拟主机)都配置为侦听此端口。
例如,查看主配置文件 (/etc/nginx/nginx.conf) 中配置的默认 nginx 服务器块。
vi /etc/nginx/nginx.conf
查找服务器块部分,如以下屏幕截图所示。
10.要在Nginx前面运行Varnish,您应该将默认的Nginx端口从80更改为 >8080(或您选择的任何其他端口)。
对于您想要通过 Varnish 提供服务的站点或 Web 应用程序,应该在未来的所有服务器块配置文件(通常在 /etc/nginx/conf.d/ 下创建)中完成此操作>。
例如,我们的测试站点 howtoing.lan
的服务器块是 /etc/nginx/conf.d/howtoing.lan.conf 并具有以下配置。
server {
listen 8080;
server_name www.tecmint.lan;
root /var/www/html/tecmint.lan/;
location / {
}
error_page 404 /404.html;
location = /40x.html {
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
}
}
重要:请记住通过在 /etc/nginx/nginx.conf 文件中注释掉默认服务器块来禁用默认服务器块,如下所示在下面的屏幕截图中。这使您能够开始在服务器上运行其他网站/应用程序,否则,Nginx 将始终将请求定向到默认服务器块。
11.配置完成后,检查配置文件是否有错误并重新启动 Nginx 服务以应用最近的更改。
nginx -t
systemctl restart nginx
12. 接下来,要接收来自客户端的 HTTP 请求,我们需要将 Varnish 配置为在端口 80 上运行。与早期版本的 Varnish Cache 不同,在 Varnish Cache 版本中,此更改是在 Varnish 环境文件(现已弃用)中进行的,在版本 6.0 及更高版本中。
我们需要在 Varnish 服务文件中进行所需的更改。运行以下命令打开相应的服务文件进行编辑。
systemctl edit --full varnish
找到以下行并更改 -a
开关的值,该开关指定侦听地址和端口。将端口设置为 80,如以下屏幕截图所示。
请注意,如果您不指定地址,varnishd 将监听服务器上所有可用的 IPv4 和 IPv6 接口。
ExecStart=/usr/sbin/varnishd -a :80 -f /etc/varnish/default.vcl -s malloc,256m
保存文件中的更改并退出。
13. 接下来,您需要定义 Varnish 将访问并从中获取内容的后端服务器。这是在 Varnish 主配置文件中完成的。
vi /etc/varnish/default.vcl
查找默认后端配置部分,并将字符串“default”更改为server1(或您选择的任何名称来代表您的源服务器)。然后将端口设置为 8080 (或您在服务器块中定义的 Nginx 监听端口)。
backend server1 {
.host = "127.0.0.1";
.port = "8080";
}
在本指南中,我们在同一服务器上运行 Varnish 和 Nginx。如果您的 Nginx Web 服务器运行在不同的主机上。例如,另一台服务器的地址为10.42.0.247,然后设置.host
参数,如图所示。
backend server1 {
.host = "10.42.0.247";
.port = "8080";
}
保存文件并关闭它。
14. 接下来,由于 Varnish 服务文件最近发生了更改,您需要重新加载 systemd 管理器配置,然后重新启动 Varnish 服务以应用更改,如下所示。
systemctl daemon-reload
systemctl restart varnish
15. 现在确认 Nginx 和 Varnish 正在侦听配置的 TCP 套接字。
ss -tpln
步骤 4:测试 Nginx Varnish 缓存设置
16. 接下来,验证网页是否通过 Varnish Cache 提供服务,如下所示。打开 Web 浏览器并使用服务器 IP 或 FDQN 进行导航,如以下屏幕截图所示。
http://www.tecmin.lan
OR
http://10.42.0.144
17. 或者,也可以使用curl 命令,如图所示。使用服务器的 IP 地址或网站的 FQDN,或者如果您在本地测试,则使用 127.0.0.1 或 localhost。
curl -I http:///www.tecmint.lan
有用的 Varnish 缓存管理实用程序
18. 在最后一节中,我们将简要描述 Varnish Cache 附带的一些有用的实用程序,您可以使用它们来控制 varnishd >、访问内存日志和总体统计数据等。
清漆
varnishadm 一个用于控制正在运行的 Varnish 实例的实用程序。它建立到 varnishd 的 CLI 连接。例如,您可以使用它来列出已配置的后端,如以下屏幕截图所示(请阅读 man varnishadm 了解更多信息)。
varnishadm
varnish> backend.list
清漆日志
varnishlog 实用程序提供对请求特定数据的访问。它提供有关特定客户和请求的信息(请阅读 man varnishlog 了解更多信息)。
varnishlog
清漆统计
varnishstat 也称为 varnish 统计信息,通过提供对内存中统计信息(如缓存命中和未命中、有关存储的信息)的访问,让您了解 Varnish 的当前性能、线程创建、删除对象(阅读man varnishstat了解更多信息)。
varnishstat
清漆顶
varnishtop 实用程序读取共享内存日志并提供最常出现的日志条目的持续更新列表(请阅读 man varnishtop 了解更多信息)。
varnishtop
清漆主义
varnishhist (varnish 历史记录)实用程序解析 varnish 日志并输出一个持续更新的直方图,显示最后 n 个请求的处理分布情况(阅读 man varnishhist 了解更多信息)。
varnishhist
就这样!在本指南中,我们展示了如何安装 Varnish Cache 并在 Nginx HTTP 服务器前面运行它,以加速 CentOS/RHEL 8 中的 Web 内容交付。
关于本指南的任何想法或问题都可以使用下面的反馈表来分享。有关更多信息,请阅读 Varnish 缓存文档。
Varnish Cache 的主要缺点是缺乏对 HTTPS 的本机支持。要在您的网站/应用程序上启用 HTTPS,您需要配置 SSL/TLS 终止代理以与 Varnish Cache 结合使用来保护您的网站。在下一篇文章中,我们将展示如何在 CentOS/RHEL 8 上使用 Hitch 为 Varnish 缓存启用 HTTPS。