如何在 CentOS 7 上通过 Varnish Cache 加速 Nginx

Varnish Cache(又稱Varnish)是一款開源、高性能的HTTP加速器,旨在加速Web伺服器。在我們之前的文章中,我們已經解釋了如何在CentOS 7和CentOS 8上設置Varnish Cache for Apache

在本文中,我們將展示如何在CentOS 7上將Varnish Cache安裝和使用作為Nginx HTTP伺服器的前端。這個指南也應該適用於RHEL 7

需求

  1. A CentOS 7 with Apache installed
  2. A CentOS 7 with a static IP address

步驟1:在CentOS 7上安裝Nginx Web伺服器

1.首先,使用YUM套件管理器從預設的CentOS軟體庫安裝Nginx HTTP伺服器,方法如下。

# yum install nginx
Install Nginx on CentOS 7

2.安裝完成後,啟動Nginx服務,並設置為在系統啟動時自動啟動。

# systemctl start nginx
# systemctl enable nginx
# systemctl status nginx
Start and Enable Nginx at Boot

3.現在,使用以下命令修改系統防火牆規則,允許通過80端口的入站封包。

# firewall-cmd --zone=public --permanent --add-port=80/tcp
# firewall-cmd --reload
# firewall-cmd --zone=public --permanent --add-port=8080/tcp
# firewall-cmd --reload
Open Nginx Port on Firewall

步驟2:在CentOS 7上安裝Varnish Cache

4.現在有最新版本的Varnish Cache 6(即撰寫時的6.5)的預編譯 RPM 套件,因此您需要新增官方的 Varnish Cache 儲存庫。

在此之前,您需要啟用 EPEL 儲存庫,以安裝幾個依賴套件,如下所示。

# yum install -y epel-release

5.接著,安裝pygpgme套件,用於處理 GPG 簽名,以及yum-utils,這是一組有用的工具,可以在各種方式上擴展 yum 的本機功能。

# yum install pygpgme yum-utils

6.現在創建一個名為/etc/yum.repos.d/varnishcache_varnish5.repo的文件,其中包含以下儲存庫配置。

# vi /etc/yum.repos.d/varnishcache_varnish65.repo

重要:請確保在下面的配置中用您的 Linux 發行版和版本替換el7

[varnishcache_varnish65]
name=varnishcache_varnish65
baseurl=https://packagecloud.io/varnishcache/varnish65/el/7/$basearch
repo_gpgcheck=1
gpgcheck=0
enabled=1
gpgkey=https://packagecloud.io/varnishcache/varnish65/gpgkey
sslverify=1
sslcacert=/etc/pki/tls/certs/ca-bundle.crt
metadata_expire=300

[varnishcache_varnish65-source]
name=varnishcache_varnish65-source
baseurl=https://packagecloud.io/varnishcache/varnish65/el/7/SRPMS
repo_gpgcheck=1
gpgcheck=0
enabled=1
gpgkey=https://packagecloud.io/varnishcache/varnish65/gpgkey
sslverify=1
sslcacert=/etc/pki/tls/certs/ca-bundle.crt
metadata_expire=300

7.現在執行以下命令以更新本地 yum 快取並安裝 vanish 快取套件(安裝套件時不要忘記接受 GPG 金鑰,請輸入yyes):

# yum -q makecache -y --disablerepo='*' --enablerepo='varnishcache_varnish65'
# yum install varnish 
Install Varnish Cache in CentOS 7

8.安裝Varnish Cache後,主要執行檔將安裝為/usr/sbin/varnishd,而 vanish 配置文件位於/etc/varnish/

  • /etc/varnish/default.vcl – 這是主要 vanish 配置文件,使用 vanish 配置語言(VCL)編寫。

9.現在啟動Varnish服務,並啟用它在系統啟動時自動啟動,確認其狀態以確保它正常運行,如下所示。

# systemctl start varnish
# systemctl enable varnish
# systemctl status varnish
Start Varnish Cache

10.您可以通過查看Varnish可執行文件的位置和系統上安裝的版本來確認Varnish安裝成功。

$ which varnishd
$ varnishd -V
範例輸出
varnishd (varnish-6.5.1 revision 1dae23376bb5ea7a6b8e9e4b9ed95cdc9469fb64)
Copyright (c) 2006 Verdens Gang AS
Copyright (c) 2006-2020 Varnish Software

步驟3:配置Nginx與Varnish緩存配合使用

11.在此步驟中,您需要配置Nginx與Varnish緩存配合使用。預設情況下,Nginx聽取端口80,您應該將默認的Nginx端口更改為8080,以便它在Varnish緩存後運行。

打開Nginx配置文件/etc/nginx/nginx.conf,找到行listen 80,並將其更改為如下所示的listen 8080,如下所示的服務器塊中所示。

# vi /etc/nginx/nginx.conf
Configure Nginx Listening Port

注意:對於您想通過Varnish提供服務的網站,應在所有服務器塊配置文件(通常創建在/etc/nginx/conf.d/下)中執行此操作。

12.接下來,打開Varnish服務配置文件,找到參數ExecStart,該參數指定Varnish聽取的端口,並將其值從6081更改為80

# systemctl edit --full  varnish

該行應如下所示。

ExecStart=/usr/sbin/varnishd -a :80 -f /etc/varnish/default.vcl -s malloc,256m
Change Varnish Cache Port

13.接下來,設置Nginx作為Varnish代理的後端服務器,在/etc/varnish/default.vcl配置文件中。

# vi /etc/varnish/default.vcl 

找到後端部分,並定義主機IP和端口。下面是默認的後端配置,將其設置為指向您的實際內容服務器。

backend default {
    .host = "127.0.0.1";
    .port = "8080";
}

14.完成所有必要的配置後,重新啟動Nginx HTTPD和Varnish緩存以生效上述更改。

# systemctl daemon-reload
# systemctl restart nginx
# systemctl restart varnish

步驟4:在Nginx上測試Varnish緩存

15.最後,使用下面的cURL命令測試Varnish緩存是否已啟用並與Nginx服務一起運行,以查看HTTP標頭。

# curl -I http://localhost
示例輸出
HTTP/1.1 200 OK
Server: nginx/1.16.1
Date: Wed, 06 Jan 2021 09:24:18 GMT
Content-Type: text/html
Content-Length: 4833
Last-Modified: Fri, 16 May 2014 15:12:48 GMT
ETag: "53762af0-12e1"
X-Varnish: 2
Age: 0
Via: 1.1 varnish (Varnish/6.5)
Accept-Ranges: bytes
Connection: keep-alive

您可以從Varnish緩存Github存儲庫獲取其他信息:https://github.com/varnishcache/varnish-cache

在本教程中,我們解釋了如何在CentOS 7上為Nginx HTTP服務器設置Varnish緩存。使用下面的評論表格向我們發送任何查詢或額外的想法。

Source:
https://www.tecmint.com/install-varnish-cache-for-nginx-on-centos-7/