如何在 CentOS 8 上使用 Nginx 安装和设置 Varnish Cache 6
在此页
- 先决条件
- 安装和配置 Nginx Web 服务器
- 安装清漆缓存
- 为 Nginx 配置 Varnish
- 配置 SELinux 和防火墙
- 测试清漆缓存
- 结论
Varnish Cache 是用于网站和 API 的免费开源反向代理 HTTP 加速器。它可以作为反向代理安装在任何运行在 HTTP 上的 Web 服务器前面。它位于网络服务器和浏览器之间,将网页、cookie 和其他数据保存到内存中。此缓存将用于服务所有未来对完全相似内容的请求。这将增加 web 应用程序负载,并将 web 服务器性能提高 300+ 倍。
在本教程中,我们将设置 Nginx 服务器作为后端服务器并将其配置为侦听端口 8080,然后配置 Varnish 缓存以侦听默认的 HTTP 端口 80。
先决条件
- 一台运行 CentOS 8 的服务器。
- 为服务器配置了根密码。
安装和配置 Nginx Web 服务器
首先,您需要在系统中安装 Nginx Web 服务器。您可以使用以下命令安装它:
dnf install nginx -y
安装后,启动 Nginx 服务并使用以下命令使其在系统重启时启动:
systemctl start nginx
systemctl enable nginx
默认情况下,Nginx 监听 80 端口。因此您需要将 Nginx 配置为监听 80 端口。您可以通过编辑 Nginx 默认配置文件来配置它:
nano /etc/nginx/nginx.conf
找到以下几行:
listen 80 default_server;
listen [::]:80 default_server;
并且,将它们替换为以下行:
listen 8080 default_server;
listen [::]:8080 default_server;
完成后保存并关闭文件。然后,重新启动 Nginx 服务以应用更改:
systemctl restart nginx
至此,Nginx web服务器已经安装完成并监听8080端口,可以使用以下命令查看:
netstat -tpln | grep 8080
您应该得到以下输出:
tcp 0 0 0.0.0.0:8080 0.0.0.0:* LISTEN 30367/nginx: master
tcp6 0 0 :::8080 :::* LISTEN 30367/nginx: master
安装清漆缓存
默认情况下,Varnish 包在 CentOS 8 默认存储库中可用。您只需运行以下命令即可安装它:
dnf module install varnish
安装后,使用以下命令启动 Varnish 服务:
systemctl start varnish
您还可以使用以下命令验证已安装的 Varnish 缓存版本:
varnishd -V
您应该看到以下输出:
varnishd (varnish-6.0.2 revision 0458b54db26cfbea79af45ca5c4767c7c2925a91)
Copyright (c) 2006 Verdens Gang AS
Copyright (c) 2006-2018 Varnish Software AS
为 Nginx 配置清漆
接下来,您需要将 Varnish 配置为在端口 80 上运行以接收来自客户端的 HTTP 请求。您可以通过编辑 Varnish 默认配置文件来配置它:
systemctl edit --full varnish
找到以下行:
ExecStart=/usr/sbin/varnishd -a :6081 -f /etc/varnish/default.vcl -s malloc,256m
并且,将其替换为以下行:
ExecStart=/usr/sbin/varnishd -a :80 -f /etc/varnish/default.vcl -s malloc,256m
完成后保存并关闭文件。
接下来,您需要为 Varnish 定义后端服务器。您可以通过编辑 Varnish 主配置文件 /etc/varnish/default.vcl 来完成:
nano /etc/varnish/default.vcl
更改以下行:
backend myserver {
.host = "127.0.0.1";
.port = "8080";
}
完成后保存并关闭文件。然后,使用以下命令重新加载 systemd 守护进程:
systemctl daemon-reload
接下来,重新启动 Varnish 服务并使用以下命令使其在系统重启时启动:
systemctl restart varnish
systemcl enable varnish
您还可以使用以下命令验证 Varnish 的状态:
systemctl status varnish
您应该得到以下输出:
? varnish.service - Varnish Cache, a high-performance HTTP accelerator
Loaded: loaded (/etc/systemd/system/varnish.service; disabled; vendor preset: disabled)
Active: active (running) since Sat 2020-08-29 09:36:58 EDT; 12s ago
Process: 30421 ExecStart=/usr/sbin/varnishd -a :80 -f /etc/varnish/default.vcl -s malloc,256m (code=exited, status=0/SUCCESS)
Main PID: 30424 (varnishd)
Tasks: 217
Memory: 91.8M
CGroup: /system.slice/varnish.service
??30424 /usr/sbin/varnishd -a :80 -f /etc/varnish/default.vcl -s malloc,256m
??30434 /usr/sbin/varnishd -a :80 -f /etc/varnish/default.vcl -s malloc,256m
Aug 29 09:36:57 centos8 systemd[1]: Starting Varnish Cache, a high-performance HTTP accelerator...
Aug 29 09:36:58 centos8 varnishd[30421]: Debug: Version: varnish-6.0.2 revision 0458b54db26cfbea79af45ca5c4767c7c2925a91
Aug 29 09:36:58 centos8 varnishd[30421]: Debug: Platform: Linux,4.18.0-193.6.3.el8_2.x86_64,x86_64,-junix,-smalloc,-sdefault,-hcritbit
Aug 29 09:36:58 centos8 varnishd[30424]: Version: varnish-6.0.2 revision 0458b54db26cfbea79af45ca5c4767c7c2925a91
Aug 29 09:36:58 centos8 varnishd[30424]: Platform: Linux,4.18.0-193.6.3.el8_2.x86_64,x86_64,-junix,-smalloc,-sdefault,-hcritbit
Aug 29 09:36:58 centos8 varnishd[30421]: Debug: Child (30434) Started
Aug 29 09:36:58 centos8 varnishd[30424]: Child (30434) Started
Aug 29 09:36:58 centos8 varnishd[30424]: Child (30434) said Child starts
Aug 29 09:36:58 centos8 systemd[1]: Started Varnish Cache, a high-performance HTTP accelerator.
您现在可以使用以下命令验证 Nginx 和 Varnish 的监听端口:
netstat -tpln | grep 80
您应该看到以下输出:
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 30424/varnishd
tcp 0 0 0.0.0.0:8080 0.0.0.0:* LISTEN 30367/nginx: master
tcp6 0 0 :::80 :::* LISTEN 30424/varnishd
tcp6 0 0 :::8080 :::* LISTEN 30367/nginx: master
配置 SELinux 和防火墙
默认情况下,SELinux 在 CentOS 8 中是启用的。所以你需要为 Varnish 配置 SELinux。您可以使用以下命令对其进行配置:
setsebool -P httpd_can_network_connect 1
接下来,您需要通过 firewalld 允许端口 80。您可以使用以下命令执行此操作:
firewall-cmd --permanent --zone public --add-port 80/tcp
firewall-cmd --reload
完成后,您可以继续下一步。
测试清漆缓存
此时,Varnish 缓存已安装并配置了 Nginx Web 服务器。现在,是时候测试 Varnish 缓存是否正常工作了。
您可以使用 curl 命令对其进行测试,如下所示:
curl -I http://localhost
您应该看到以下输出:
HTTP/1.1 200 OK
Server: nginx/1.14.1
Date: Sat, 29 Aug 2020 13:53:44 GMT
Content-Type: text/html; charset=UTF-8
X-Powered-By: PHP/7.2.24
X-Varnish: 32800
Age: 0
Via: 1.1 varnish (Varnish/6.0)
Accept-Ranges: bytes
Connection: keep-alive
结论
恭喜!您已经在 CentOS 8 上成功安装了带有 Nginx 的 Varnish Cache。我希望您也可以轻松地使用 Apache Web 服务器配置 Varnish 缓存。如果您有任何问题,请随时问我。