在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緩存,以提高網站性能。如有任何疑問,請隨時與我們聯繫。

Sidebar