在CentOS 8上为Apache / Nginx安装Varnish Cache 6
在CentOS 8上为Apache / Nginx安装Varnish Cache 6
Varnish Cache是功能强大的反向HTTP代理,用于加速可作为开源软件使用的Web应用程序。 Varnish缓存静态和动态内容。 在到达Web服务器后端之前,处理所有入站请求。 它位于您的Web浏览器与Apache或Nginx Web服务器之间。 Varnish缓存将所有传入的页面请求存储在内存中,从而无需Web服务器多次创建相同的Web页面。
这篇文章将向您展示如何使用Apache和Nginx在CentOS 8上安装Varnish缓存。
先决条件
- 运行CentOS的服务器8。
- 服务器具有root密码。
入门
我们建议您在开始之前将系统软件包更新为最新版本。您可以通过运行以下命令来更新它们:
dnf update -y
更新所有软件包后,您可以继续执行下一步。
安装清漆
默认情况下,Varnish软件包包含在CentOS 8默认存储库中。您可以通过运行以下命令来安装它。
dnf install varnish -y
安装Varnish之后,编辑Varnish默认配置文件以定义由Nginx或Apache Web服务器备份的地址。
nano /etc/varnish/default.vcl
更改以下行。
backend default { .host = "127.0.0.1"; .port = "8080"; }
完成后,保存文件并关闭它。
弥补清漆
默认情况下,Varnish侦听端口6081。因此,您需要将Varnish配置为侦听端口80。 您可以编辑和配置varnish.service文件。
nano /lib/systemd/system/varnish.service
找到下一行。
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
保存并关闭文件,然后重新加载systemd守护程序以应用更改。
systemctl daemon-reload
然后启动Varnish服务,以便可以使用以下命令在系统重新引导时启动它:
systemctl start varnishsystemctl enable varnish
您也可以使用以下命令检查清漆的状态:
systemctl status varnish
您应该获得以下输出:
? varnish.service - Varnish Cache, a high-performance HTTP accelerator Loaded: loaded (/usr/lib/systemd/system/varnish.service; disabled; vendor preset: disabled) Active: active (running) since Fri 2021-03-12 04:17:32 EST; 4s ago Process: 6391 ExecStart=/usr/sbin/varnishd -a :80 -f /etc/varnish/default.vcl -s malloc,256m (code=exited, status=0/SUCCESS) Main PID: 6392 (varnishd) Tasks: 217 Memory: 99.5M CGroup: /system.slice/varnish.service ??6392 /usr/sbin/varnishd -a :80 -f /etc/varnish/default.vcl -s malloc,256m ??6402 /usr/sbin/varnishd -a :80 -f /etc/varnish/default.vcl -s malloc,256m Mar 12 04:17:32 masternode systemd[1]: Starting Varnish Cache, a high-performance HTTP accelerator... Mar 12 04:17:32 masternode varnishd[6391]: Debug: Version: varnish-6.0.6 revision 29a1a8243dbef3d973aec28dc90403188c1dc8e7 Mar 12 04:17:32 masternode varnishd[6391]: Debug: Platform: Linux,4.18.0-193.6.3.el8_2.x86_64,x86_64,-junix,-smalloc,-sdefault,-hcritbit Mar 12 04:17:32 masternode varnishd[6392]: Version: varnish-6.0.6 revision 29a1a8243dbef3d973aec28dc90403188c1dc8e7 Mar 12 04:17:32 masternode varnishd[6392]: Platform: Linux,4.18.0-193.6.3.el8_2.x86_64,x86_64,-junix,-smalloc,-sdefault,-hcritbit Mar 12 04:17:32 masternode varnishd[6391]: Debug: Child (6402) Started Mar 12 04:17:32 masternode varnishd[6392]: Child (6402) Started Mar 12 04:17:32 masternode varnishd[6392]: Child (6402) said Child starts Mar 12 04:17:32 masternode systemd[1]: Started Varnish Cache, a high-performance HTTP accelerator.
此时,Varnish已启动并在端口80上侦听。您可以使用以下命令进行检查。
ss -antpl | grep varnishd
您应该获得以下输出:
LISTEN 0 10 127.0.0.1:34977 0.0.0.0:* users:(("varnishd",pid=1532,fd=11)) LISTEN 0 128 0.0.0.0:80 0.0.0.0:* users:(("cache-main",pid=1542,fd=6),("varnishd",pid=1532,fd=6)) LISTEN 0 128 [::]:80 [::]:* users:(("cache-main",pid=1542,fd=7),("varnishd",pid=1532,fd=7)) LISTEN 0 10 [::1]:34909 [::]:* users:(("varnishd",pid=1532,fd=10))
此时,将安装并配置Varnish。现在,您可以继续下一步。
安装和配置Nginx以使用清漆
首先,您需要在服务器上安装Nginx软件包。您可以使用以下命令进行安装。
dnf install nginx -y
安装后,您需要将Nginx侦听端口从80更改为8080。这可以通过编辑Nginx默认配置文件来完成。
nano /etc/nginx/nginx.conf
更改以下行。
listen 8080 default_server; listen [::]:8080 default_server;
保存文件,关闭文件,并使用以下命令检查Nginx的语法错误:
nginx -t
您应该获得以下输出:
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok nginx: configuration file /etc/nginx/nginx.conf test is successful
然后启动Nginx服务,以便可以在系统重新启动时启动它。
systemctl start nginxsystemctl enable nginx
您还可以使用以下命令检查Nginx侦听端口:
ss -antpl | grep 8080
您应该获得以下输出:
LISTEN 0 128 0.0.0.0:8080 0.0.0.0:* users:(("nginx",pid=5569,fd=8),("nginx",pid=5568,fd=8)) LISTEN 0 128 [::]:8080 [::]:* users:(("nginx",pid=5569,fd=9),("nginx",pid=5568,fd=9))
此时,Varnish缓存已安装并配置为将所有请求从端口80转发到侦听端口8080的Nginx Web服务器。
您可以使用以下命令检查Varnish缓存是否正常工作:
curl -I http://localhost
您应该获得以下输出:
HTTP/1.1 200 OK Server: nginx/1.14.1 Date: Fri, 12 Mar 2021 09:18:32 GMT Content-Type: text/html Content-Length: 4057 Last-Modified: Mon, 07 Oct 2019 21:16:24 GMT ETag: "5d9bab28-fd9" X-Varnish: 2 Age: 0 Via: 1.1 varnish (Varnish/6.0) Accept-Ranges: bytes Connection: keep-alive
安装和配置Apache以与Varnish一起使用
首先,您需要在系统上安装Apache Web服务器软件包。您可以使用以下命令进行安装。
dnf install httpd -y
安装Apache之后,编辑Apache默认配置文件,并将侦听端口从80更改为8080。
nano /etc/httpd/conf/httpd.conf
更改以下行。
Listen 8080
保存并关闭文件,然后启动Apache服务,以便可以使用以下命令在系统重新引导时启动它:
systemctl start httpdsystemctl enable httpd
您还可以使用以下命令检查Apache侦听端口:
ss -antpl | grep httpd
您应该获得以下输出:
LISTEN 0 128 *:8080 *:* users:(("httpd",pid=7556,fd=4),("httpd",pid=7555,fd=4),("httpd",pid=7554,fd=4),("httpd",pid=7552,fd=4))
此时,Varnish缓存已安装并配置为将所有请求从端口80转发到侦听端口8080的Apache Web服务器。
您可以使用以下命令检查Varnish缓存是否正常工作:
curl -I http://localhost
您应该获得以下输出:
Date: Fri, 12 Mar 2021 09:21:14 GMT Server: Apache/2.4.37 (centos) Content-Location: index.html.zh-CN Vary: negotiate,accept-language TCN: choice Last-Modified: Fri, 14 Jun 2019 03:37:43 GMT ETag: "fa6-58b405e7d6fc0;5bd5365602e05" Accept-Ranges: bytes Content-Length: 4006 Content-Type: text/html; charset=UTF-8 Content-Language: zh-cn X-Varnish: 2 Age: 0 Via: 1.1 varnish (Varnish/6.0) Connection: keep-alive
清漆命令行操作
清漆带有几个有用的实用程序,可帮助您监视和控制清漆。
varnishadm是一个命令行实用程序,用于列出已配置的后端。
varnishadm
您应该看到以下输出:
200 ----------------------------- Varnish Cache CLI 1.0 ----------------------------- Linux,4.18.0-193.6.3.el8_2.x86_64,x86_64,-junix,-smalloc,-sdefault,-hcritbit varnish-6.0.6 revision 29a1a8243dbef3d973aec28dc90403188c1dc8e7 Type 'help' for command list. Type 'quit' to close CLI session.
然后运行以下命令以列出所有后端:
varnish> backend.list
您应该看到以下输出:
200 Backend name Admin Probe Last updated boot.default probe Healthy (no probe) Sat, 13 Mar 2021 03:00:02 GMT
varnishlog
varnishlog实用程序用于显示所有用户请求的日志。
varnishlog
您应该获得以下输出:
* << BeReq >> 6 - Begin bereq 5 fetch - VCL_use boot - Timestamp Start: 1615604631.507187 0.000000 0.000000 - BereqMethod GET - BereqURL / - BereqProtocol HTTP/1.1 - BereqHeader Host: 69.87.218.214 - BereqHeader Upgrade-Insecure-Requests: 1 - BereqHeader User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.141 Safari/537.36 - BereqHeader Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9 - BereqHeader Accept-Language: en-GB,en-US;q=0.9,en;q=0.8 - BereqHeader X-Forwarded-For: 106.213.193.241 - BereqHeader Accept-Encoding: gzip - BereqHeader X-Varnish: 6 - VCL_call BACKEND_FETCH - VCL_return fetch - BackendOpen 31 boot.default 127.0.0.1 8080 127.0.0.1 58860 - BackendStart 127.0.0.1 8080 - Timestamp Bereq: 1615604631.507458 0.000270 0.000270 - Timestamp Beresp: 1615604631.507844 0.000657 0.000386 - BerespProtocol HTTP/1.1 - BerespStatus 200 - BerespReason OK - BerespHeader Server: nginx/1.14.1 - BerespHeader Date: Sat, 13 Mar 2021 03:03:51 GMT - BerespHeader Content-Type: text/html - BerespHeader Content-Length: 4057 - BerespHeader Last-Modified: Mon, 07 Oct 2019 21:16:24 GMT
清漆
varnishstat命令提供有关内存中统计信息,存储,创建的线程和已删除的对象的信息。
varnishstat
显示以下屏幕。
清漆
varnishtop命令读取涂有油漆的共享内存日志,并显示最经常出现的日志条目的连续更新列表。
varnishtop
显示以下屏幕。
清漆的
Varnishhist解析清漆日志并对其进行处理以输出最后n个请求。
varnishhist
显示以下屏幕。
结论
在上面的指南中,您学习了如何使用Apache和Nginx Web服务器安装和配置Varnish缓存。现在,您可以在生产环境中实现Varnish缓存,以提高网站性能。如有任何疑问,请随时与我们联系。