Varnish Cache + NGINX 反向代理是如何工作的
已發表: 2022-08-09在本文中,我們將討論 Varnish 緩存 NGINX 反向代理以及如何設置它。
一個強調 HTTP 緩存的代理服務器是 Varnish。 它是一個 HTTP 加速器,可以作為 Apache 或 NGINX Web 服務器的反向代理。 流量大、知名度高的網站都採用了 Varnish。
目錄
什麼是清漆緩存?
對於基於 Web 的公司,緩存通常是最關鍵的軟件部分。 Varnish Cache 是一個強大的、開源的 HTTP 引擎/反向 HTTP 代理,正如其名稱所暗示的那樣:緩存(或存儲)訪問者第一次查看網頁的副本。 這可以將網站的速度提高 1000%。 Varnish 向您的服務器發出單個請求以緩存頁面,之後它會處理對同一頁面的任何後續請求。 這導致了令人難以置信的快速內容交付和對後端服務器資源的更少需求。
- Varnish 的核心競爭力是速度和性能。
- 服務器基礎設施節省
- 可擴展性——無論訪問者或請求的數量如何,Varnish 都能讓您的網站滿足需求。
- 中斷保護:即使您的服務器崩潰,Varnish 也會繼續提供緩存信息。
- 靈活性:Varnish 配置語言 (VCL) 允許創建專門的解決方案、規則和模塊。
- 增強的用戶體驗
Varnish Cache 是如何工作的?
在它們到達您的 Web 服務器的後端之前,Varnish 會處理所有傳入的請求。 它的緩存處理所有網絡流量,默認情況下每兩分鐘刷新一次。
Varnish 會將請求路由到 Web 服務器的後端並緩存結果,正如我們剛剛在通用反向代理段落中看到的,如果請求沒有被緩存。
一旦請求被緩存,它們就會被放入內存中,然後可以快速檢索並發送給客戶。 Varnish 使用 VCL 語言來表達設置、緩存策略和其他規則(Varnish 配置語言)。
您可以使用該語言及其變體以不同方式響應每個請求。 例如,您可以將某些請求定向到特定後端或指示 Varnish 根據傳入請求的特徵或其結果採取不同的操作。
即使 Web 服務器不可用,緩存的材料仍然可以提供,因為有一個稱為後端輪詢的內置功能,這是另一個驚人的 Varnish 功能。 如果 Varnish 檢測到停機時間,它將繼續在稱為寬限期的時間範圍內提供緩存的內容。 後端輪詢以您可以靈活設置的頻率查詢服務器。
什麼是 Nginx?
NGINX 是可用於視頻流、緩存、反向代理、Web 服務和其他功能的開源軟件。 它最初是作為一個為實現最高速度和可靠性而構建的 Web 服務器。 除了作為 HTTP 服務器之外,NGINX 還可以作為 HTTP 服務器、電子郵件代理服務器(IMAP、POP3 和 SMTP)、反向代理和 HTTP、TCP 和 UDP 服務器的負載平衡器運行。
什麼是反向代理?
反向代理的主要功能是保護 Web 服務器免受傳入流量的影響。 每個連接請求都由一個反向代理接收,它在連接到處理請求的服務器之前通過許多服務器轉發它。
每個反向代理操作都包含三個主要階段:
- 連接請求收集:在網絡邊緣,反向代理接受傳入的請求。
- TCP 三向握手:在 TCP 三向握手後創建與反向代理的連接,並關閉第一個連接。
- 源服務器連接:反向代理使用虛構的 IP 地址將源服務器連接到客戶端請求。
用戶永遠無法直接連接到源服務器,因為所有 Web 瀏覽器與 Web 應用程序的連接始終是通過反向代理進行的。
你如何設置 Varnish 緩存 Nginx 反向代理?
在你的服務器上安裝 Nginx
首先,我們需要使用apt
命令從 Ubuntu 存儲庫安裝 Nginx
sudo apt update apt install nginx -y
安裝完成後,我們需要使用systemctl
命令啟動並啟用 Nginx 在每次系統啟動時啟動
systemctl start nginx systemctl enable nginx
在端口 88 上配置 Nginx
我們將設置 Nginx 使用非常規的 HTTP 端口 8080 進行操作。 為此,我們必須修改位於“sites-available”目錄中的虛擬主機文件。
nano /etc/nginx/sites-available/default
將“listen”行值更改為 8080。保存並退出。
現在通過測試 Nginx 設置來檢查錯誤。 之後重新啟動服務。
nginx -t systemctl restart nginx
使用netstat
再次檢查 Nginx,並確認它在非常規的 HTTP 端口 8080 上運行。
netstat -plntu
已經安裝好了,Nginx Web 服務器當前正在使用 8080 端口。
在 Ubuntu 上安裝清漆
我們必須使用apt
命令安裝 varnish
sudo apt install varnish -y
使用下面列出的systemctl
命令,啟動 varnish 並將其設置為在系統啟動時自動啟動。
systemctl start varnish systemctl enable varnish
默認情況下,varnish 將使用端口 6082 進行管理 Web 界面,使用端口 6081 進行公共訪問。 通過使用netstat
命令檢查,確保列出了某些端口。
netstat -plntu
Varnish HTTP 加速器已安裝
將 Varnish 配置為 Nginx 的反向代理
作為 Nginx Web 服務器的反向代理,將使用 Varnish。 Nginx Web 服務器將在 HTTP 端口 8080 上運行,而 Varnish 將在 HTTP 端口 80 上運行。
在這個階段,我們將為 Nginx 設置 Varnish,識別後端服務器,並修改 Varnish,使其使用 HTTP 端口 80 作為其默認端口。
立即進入 varnish 配置目錄編輯“default.vcl”文件。 並確保主機為 127.0.0.1,端口為 8080
nano /etc/varnish/default.vcl
後端的配置就完成了。
下一步是設置 Varnish 以使用 HTTP 端口 80。通過轉到“/etc/default”目錄中的“varnish”目錄來編輯 varnish 配置文件。
nano /etc/default/varnish
確保您的默認端口是 6081,HTTP 端口是 80
現在應該編輯“/lib/systemd/system”目錄中的清漆服務文件。 通過轉到 systemd 系統目錄來編輯 varnish.service 文件。
cd /lib/systemd/system nano varnish.service
將 HTTP 端口 80 替換為 'ExecStart' 行上的清漆端口 6081。
現在重新加載systemd
配置並重新啟動 varnish
systemctl daemon-reload systemctl restart varnish
使用netstat
命令檢查清漆
netstat -plntu
varnish 配置為 Nginx 的反向代理已完成
配置UFW防火牆
Ubuntu 操作系統上的默認人類可讀防火牆稱為“UFW”。 如果您還沒有軟件包,請使用下面顯示的 apt 命令安裝它們。
sudo apt install ufw
我們將打開防火牆並打開新的 SSH、HTTP 和 HTTPS 端口。
下面列出的 ufw 命令。
ufw allow ssh ufw allow http ufw allow https
現在打開防火牆並使其始終在啟動時啟動。
ufw enable
現在 UFW 防火牆處於活動狀態,HTTP 和 HTTPS 端口都可以從外部網絡訪問。