如何在 CentOS/RHEL 8 上为 Apache 安装 Varnish Cache
Varnish Cache是一款免费的开源、现代且高性能的 Web 应用程序加速器。它是一种快速反向 HTTP 代理,通过将 Web 内容存储在服务器内存(缓存中)中来缓存内容,从而提高 Web 服务器的性能。它配置为在原始服务器(如Apache ( HTTPD ) Web 服务器)前面运行。
当客户端请求内容时,Varnish会接受HTTP请求,将请求发送到源服务器,缓存返回的对象,并回复客户端请求。下次客户端请求相同内容时,Varnish 将从缓存中提供该内容。这样,它减少了未来同等请求的响应时间和网络带宽消耗。
Varnish还可用作HTTP请求路由器、Web 应用程序防火墙、负载均衡器等。它使用灵活的Varnish 配置语言( VCL ) 进行配置,可使用Varnish 模块(也称为VMOD)进行扩展,支持 Edge Side Includes ( ESL )、Gzip 压缩和解压缩等。
在本文中,您将学习如何在全新的CentOS/RHEL 8服务器上安装Apache HTTPD Web 服务器和Varnish Cache 6 ,包括配置 Varnish 在HTTPD服务器前运行。
先决条件:
- 安装有 CentOS 8 的服务器
- 系统上安装了 RHEL 8并启用了 Red Hat 订阅的服务器。
步骤 1:在 CentOS/RHEL 8 上安装 Apache Web 服务器
1.首先使用DNF 命令如下更新系统上所有已安装的软件包。
# dnf update
2.接下来,运行以下命令从AppStream存储库安装Apache HTTP Web 服务器。
# dnf install httpd
3.安装完成后,立即启动 httpd 服务,使其在系统启动时自动启动,并使用systemctl 命令检查其状态以确认它已启动并正在运行。
# systemctl start httpd # systemctl enable httpd # systemctl status httpd
4.默认情况下,CentOS/RHEL 8包含一个完全锁定的防火墙(运行firewall-cmd –state进行确认)。您必须在防火墙中打开对 HTTP 服务的访问,以允许用户访问通过HTTP运行的网站或应用程序,并重新加载防火墙设置以应用新的更改。
# firewall-cmd --zone=public --permanent --add-service=http # firewall-cmd --reload
步骤2:在 CentOS/RHEL 8 上安装 Varnish Cache 6.4
5.现在 Apache Web 服务器正在运行,您可以继续使用以下命令在系统上安装Varnish Cache 。
# dnf module install varnish
6.安装成功后,您可以验证系统上安装的Varnish版本。
# varnishd -V
7.接下来,主可执行文件安装为/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:配置Apache以使用Varnish缓存
9.现在是时候配置Varnish Cache以在 Apache 服务之前运行了。默认情况下,Apache 服务器配置为监听端口80 ,这在主配置文件/etc/httpd/conf/httpd.conf中定义。
使用您最喜欢的文本编辑器打开它进行编辑。
# vi /etc/httpd/conf/httpd.conf
查找Listen参数。要在 Apache 服务器前运行Varnish ,您应该将默认端口80更改为8080(或您选择的任何其他端口),如下面的屏幕截图所示。
该端口稍后将作为后端服务器的端口添加到 Varnish 配置文件中。
此外,每个通过Varnish提供服务的网站/应用程序的虚拟主机配置都应配置为监听上述端口。以下是我们的测试站点的配置 ( /etc/httpd/conf.d/example.lan.conf )。
<VirtualHost *:8080> DocumentRoot "/var/www/html/example.lan/" ServerName www.example.lan # Other directives here </VirtualHost>
重要提示:为了防止使用默认的 Apache HTTP 服务器测试页面,请注释掉文件/etc/httpd/conf.d/welcome.conf中的所有行,或者直接删除该文件。
# rm /etc/httpd/conf.d/welcome.conf
10.接下来,测试 httpd 配置语法是否有任何错误。如果正确,请重新启动 httpd 服务以应用新的更改。
# httpd -t # systemctl restart httpd
为 Systemd 配置 Varnish
11.要在HTTPD前面部署 Varnish ,您只需将其配置为在默认 HTTP 端口80中监听客户端请求,如下所述。
请注意,在Varnish Cache 6.0及更高版本中,您必须在systemd的 Varnish 服务文件中设置 varnish 服务器监听的端口。首先,打开它进行编辑。
# systemctl edit --full varnish
查找ExecStart行,然后将开关的值-a
(指定 varnish 监听的地址和端口)从更改:6081
为,:80
如下面的屏幕截图所示。
重要的是,如果您不指定地址,varnishd将监听服务器上所有可用的IPv4和IPv6接口。
ExecStart=/usr/sbin/varnishd -a :80 -f /etc/varnish/default.vcl -s malloc,256m
保存文件中的更改并退出。
使用 VCL 配置 Varnish 后端服务器
12.现在,您需要配置原始服务器,在Varnish术语中称为后端。它是理解 HTTP 的服务器,Varnish 与之通信以获取内容 - 在本例中为 httpd。它在主配置文件/etc/varnish/default.vcl中配置。
# vi /etc/varnish/default.vcl
有一个名为default的默认后端配置部分。您可以将“ default ”更改为server1(或您选择的任何名称以满足您的环境标准)。默认情况下,host参数指向localhost,假设后端服务器在本地主机上运行。
然后将端口设置为8080(您在 Apache 虚拟主机配置文件中定义的端口),如屏幕截图所示。
backend server1 { .host = "127.0.0.1"; .port = "8080"; }
如果您的后端服务器在不同的主机上运行,例如另一台地址为10.42.1.10的服务器,则主机参数应该指向该 IP 地址。
backend server1 { .host = "10.42.1.10"; .port = "8080"; }
保存文件并关闭。
13.完成有关Varnish 的所有必要更改后,重新加载systemd管理器配置以反映 Varnish 服务文件中的新更改,并重新启动 Varnish 服务以应用整体更改。
# systemctl daemon-reload # systemctl restart varnish
14.此时,Varnish和 Apache 应该分别在端口80和8080上监听。您可以使用套接字统计命令来确认这一点。
# ss -tpln
步骤4:测试Varnish缓存和Apache设置
14.要测试Varnish Cache-HTTPD设置,请打开 Web 浏览器,并使用服务器IP或FQDN进行导航,如下面的屏幕截图所示。
http://10.42.0.144 OR http://www.tecmin.lan
然后检查网页是否通过Varnish Cache提供,如下所示。右键单击显示的网页检查HTTP标头,选择“检查”以打开开发人员工具,然后单击“网络”选项卡并重新加载页面。然后选择一个请求以查看 HTTP 标头以确认这一点,如以下屏幕截图所示。
或者,您可以运行以下curl 命令来验证它。
# curl -I http:///10.42.0.144 OR #curl -I http:///www.example.lan
有用的 Varnish Cache 实用程序
15.让我们通过查看Varnish Cache发行版附带的一些有用程序来结束本指南。它们包括用于 varnish 缓存管理、显示详细日志记录和查看 varnish 性能统计信息的实用程序,如下所述。
清漆
第一个是varnishadm,用于管理正在运行的Varnish实例。它与varnishd建立命令行界面连接。它可以通过启动和停止varnishd、更改配置参数、重新加载 VCL、列出后端等来影响正在运行的 Varnish 实例。
# varnishadm > backend.list
欲了解更多信息,请阅读man varnishadm。
varnishlog
下一个程序是varnishlog,用于访问请求特定数据(即有关特定客户端和请求的信息)。它提供大量信息,因此通常需要对其进行过滤。
# varnishlog
欲了解更多信息,请阅读man varnishlog。
varnishstat
我们还有varnishstat(varnish statistics),用于访问总体统计数据,例如总请求数、对象数等。
# varnishstat
欲了解更多信息,请阅读man varnishstat。
清漆顶部
然后我们有varnishtop,这是一个实用程序,可以读取Varnish日志并提供最常出现的日志条目的持续更新列表。
# varnishtop
欲了解更多信息,请阅读man varnishtop。
清漆
另一个有用的实用程序是varnishhist(varnish history),它读取 Varnish 日志并提供连续更新的直方图,显示最后N 个请求的处理分布情况。
# varnishhist
欲了解更多信息,请阅读man varnishhist。
就是这样!您已成功部署Varnish Cache来加速在CentOS/RHEL 8上使用Apache HTTP Server提供的 Web 应用程序内容。
如果您对此主题有任何疑问或想法,请使用下面的反馈表。查看Varnish Cache 6.0 文档了解更多信息。
如果您想在您的网站上启用HTTPS,请查看我们的下一篇文章,它将展示如何在CentOS/RHEL 8上使用 Hitch 为 Varnish Cache 启用 SSL/TLS。