Varnish Cache 是一个免费开源、现代化且高性能的网络应用加速器。它是一个快速的反向HTTP代理,通过将网页内容缓存在服务器内存中以加速您的Web服务器性能。它被配置在诸如Apache(HTTPD)等源服务器之前运行。
当客户端请求内容时,Varnish 接受HTTP 请求,将请求发送到源服务器,缓存返回的对象,并回复给客户端请求。下次客户端请求相同的内容时,Varnish将从缓存中提供它。通过这种方式,它减少了未来等效请求的响应时间和网络带宽消耗。
Varnish 还可作为HTTP 请求路由器、网络应用防火墙、负载均衡器等工作。它使用灵活的Varnish配置语言(VCL)进行配置,可通过Varnish模块(也称为VMODs)进行扩展,支持边缘包含(ESI)、Gzip压缩和解压缩等功能。
在本文中,您将学习如何在新的CentOS/RHEL 8服务器上安装Apache HTTPD Web服务器和Varnish Cache 6,包括配置Varnish在HTTPD服务器前运行。
先决条件:
- A server with CentOS 8 Installation
- A server with RHEL 8 installation with enabled Red Hat subscription on your system.
第一步:在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运行的网站或应用程序,并重新加载firewalld设置以应用新更改。
# firewall-cmd --zone=public --permanent --add-service=http # firewall-cmd --reload
第二步:在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 Cache一起工作
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/tecmint.lan.conf的配置。
<VirtualHost *:8080> DocumentRoot "/var/www/html/tecmint.lan/" ServerName www.tecmint.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.要将 Varnish 部署在 HTTPD 之前,您只需将其配置为在默认的 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术语中称为后端。这是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的另一台服务器,则host参数应指向此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 上监听。您可以使用 socket statistics command 来确认这一点。
# ss -tpln

第 4 步:测试 Varnish Cache 和 Apache 设置
14. 要测试 Varnish Cache-HTTPD 设置,请打开一个网络浏览器,并使用服务器的 IP 或 FQDN 如下截图所示进行导航。
http://10.42.0.144 OR http://www.tecmin.lan
然后检查网页是否通过 Varnish Cache 提供。右键单击显示的网页,选择 Inspect 打开开发者工具,然后点击 Network 选项卡,然后 reload 页面。然后选择一个请求以查看 HTTP 标头以确认这一点,如下截图所示。

或者,您可以运行以下 curl command 进行验证。
# curl -I http:///10.42.0.144 OR #curl -I http:///www.tecmint.lan

有用的 Varnish Cache 实用程序
15. 让我们通过查看一些有用的程序来结束这个指南,这些程序是 Varnish Cache 发行版附带的。它们包括用于 varnish cache 管理、显示详细日志记录和查看 varnish 性能统计信息的实用程序,如下所述。
varnishadm
第一个是varnishadm,用于管理运行中的Varnish实例。它建立了与varnishd的命令行界面连接。它可以通过启动和停止varnishd,更改配置参数,重新加载VCL,列出后端等来影响运行中的Varnish实例。
# varnishadm > backend.list

有关更多信息,请阅读man varnishadm。
varnishlog
接下来的程序是varnishlog,用于访问特定请求的数据(即有关特定客户端和请求的信息)。它提供大量信息,因此通常需要对其进行过滤。
# varnishlog

有关更多信息,请阅读man varnishlog。
varnishstat
我们还有varnishstat(varnish统计),用于访问总体统计信息,如总请求数、对象数量等。
# varnishstat

有关更多信息,请阅读man varnishstat。
varnishtop
然后我们有varnishtop,它是一个实用程序,读取Varnish日志并呈现最常出现的日志条目的持续更新列表。
# varnishtop

有关更多信息,请阅读man varnishtop。
varnishhist
另一个有用的工具是varnishhist(varnish历史)实用程序读取Varnish日志,并呈现一个持续更新的直方图,显示最后N个请求的处理分布。
# varnishhist

有关更多信息,请阅读man varnishhist。
就是这样!您已成功部署Varnish Cache以加速使用Apache HTTP服务器在CentOS/RHEL 8上提供的 Web 应用程序内容。
如果您对此主题有任何疑问或想要分享想法,请使用下面的反馈表。查看Varnish Cache 6.0 文档以获取更多信息。
如果您想在您的网站上启用HTTPS,请查看我们的下一篇文章,它将展示如何在CentOS/RHEL 8上使用 Hitch 为 Varnish Cache 启用 SSL/TLS。
Source:
https://www.tecmint.com/install-varnish-cache-for-apache-on-centos-rhel-8/