如何設置反向代理(Nginx 和 Apache 的分步操作)
已發表: 2020-08-14反向代理位於 Web 服務器前面,並在所有請求到達源服務器之前接收它們。 它的工作方式類似於轉發代理,除了在這種情況下它是使用代理的 Web 服務器而不是用戶或客戶端。 反向代理通常用於增強 Web 服務器的性能、安全性和可靠性。
例如,您可以在服務器 A 上的example.com
域上託管一個非 WordPress 站點,並在服務器 B 上託管在example.com/blog
URL 上的 WordPress 上運行其博客。您可以通過為服務器託管您的主站點。 您可以配置反向代理,將博客的請求重定向到不同的服務器(例如,Kinsta 等託管 WordPress 主機)。
在本文中,您將了解反向代理服務器的基礎知識、它們的工作原理、它們的主要優點以及如何使用它們來加速和保護您的 WordPress 站點。
興奮的? 開始吧!
什麼是反向代理?
要了解什麼是反向代理服務器,您首先需要了解它的作用並熟悉它的所有相關術語。
當您通過輸入域名或單擊鏈接正常瀏覽網頁時,您的瀏覽器/設備會直接連接到網站的服務器並開始下載其資源。

如果您想從您訪問的網站匿名化您的 IP 地址,那麼您可以使用代理服務器首先將您的所有請求發送給它。 它會將您的請求轉發到 DNS 解析器,然後從其源服務器下載網站的資源。
之後,它會將這些資源傳遞給您的設備。 這稱為轉發代理。

您對網站完全隱藏,因為它認為您的請求來自轉發代理。
除了增強用戶隱私外,轉發代理主要用於繞過地理內容限制。 例如,如果您想觀看在您所在地區被阻止的視頻,您可以使用轉發代理和 IP 地址,在該 IP 地址上可以觀看該視頻。
轉發代理的工作方式與虛擬專用網 (VPN) 幾乎相同,但它們是具有獨特用例的不同技術(儘管它們有時可能重疊)。
反向代理服務器與正向代理服務器
反向代理服務器充當源服務器的前端,以保持匿名性並增強安全性,就像用戶/客戶端如何使用正向代理來實現相同目的一樣。 它確保沒有用戶或客戶端直接與源服務器通信。

正向代理與反向代理之間的區別很小,但它們的工作方式不同。
兩者可以一起工作,因為它們的功能之間沒有重疊。 通常,用戶/客戶端使用正向代理,而源服務器使用反向代理。

由於服務器管理員可以控制反向代理的工作方式,因此您可以使用它來啟用許多有用的功能。
我們將在本文後面列出它的所有好處。
為什麼使用反向代理?
許多企業,尤其是大型企業,使用定制的網站,這些網站是根據他們的獨特需求量身定制的,而不是在 WordPress 上運行。 一些例子包括銀行和保險網站。
在其他情況下,企業可能會將其網站託管在不允許他們安裝任何外部軟件(例如 WordPress)的外部服務上。 通常,這些是使用 Shopify 等電子商務平台的中小型零售商。
由於 WordPress 具有強大的 CMS 功能,許多企業,包括擁有定製網站的大型企業,可能更喜歡使用 WordPress 託管他們的博客。
解決此問題的一種方法是在主網站的子域上安裝 WordPress,並構建導航菜單,以便用戶可以輕鬆地在主網站和博客之間切換。
由於子域表現為一個獨特的域,它會影響您網站的 SEO。 儘管 Google 對子域和子目錄一視同仁,但如果網站託管在子域中,則優化網站的搜索引擎排名要比託管在子目錄中要花費更多的精力。

谷歌重申它平等對待子域和子目錄,但一些 SEO 專家不同意。 即使它不影響網站的 SEO,託管在子目錄中的網站也更容易維護。
這就是為什麼您可以使用反向代理將請求重定向到託管在單獨服務器上的站點博客。 例如,銀行可以在其服務器上安全地託管其主要網站,但他們也可以在 Kinsta 等託管 WordPress 主機上單獨託管其 WordPress 驅動的博客。

將兩個不同的站點統一在一個域名下是使用反向代理的主要優勢之一。 它可以幫助品牌保持其網站的組織性、專業性並保持信譽。
使用反向代理的好處
除了上述用例之外,反向代理還具有許多其他好處。 下面的部分討論了它們的一些主要優點。
負載均衡
單個源服務器無法處理具有數百萬每日唯一訪問者的網站的所有傳入流量。 在這些情況下,您可以在包含許多服務器的池中巧妙地分配流量。 通常,所有服務器將託管相同的內容以消除單點故障,從而使網站更加可靠。
反向代理是一種很好的設置方式,因為它可以在傳入流量到達源服務器之前接收它。 如果源服務器過載或完全失敗,它可以將流量分配給其他服務器,而不會影響站點功能。
反向代理還可以將傳入請求定向到多個服務器,每個服務器執行其優化的特定功能。 然後反向代理可以收集來自所有服務器的響應並將它們傳遞給客戶端。
由於我們主要使用大多數流行的反向代理來進行負載平衡,因此它們也被稱為負載平衡器。
全局服務器負載平衡 (GSLB)
GSLB 是一種高級負載平衡方法,用於在世界各地戰略性放置的許多服務器之間分配網站流量。 它通常通過任播路由技術完成,其中反向代理根據客戶端和服務器之間的最快傳輸時間選擇服務器節點。
GSLB 不僅大大提高了站點的可靠性和安全性,還減少了延遲和加載時間,從而增強了用戶體驗。 您可以將 GSLB 與 Spoon Feeding 等其他網絡優化技術結合使用,以進一步釋放源服務器的計算資源。
儘管您可以在服務器上手動設置全局服務器負載平衡,但通常由 Cloudflare 和 KeyCDN(也為 Kinsta CDN 提供支持)等專用 CDN 負責。 Kinsta 通過由 Google Cloud Platform 提供支持的負載均衡器為所有託管的網站提供服務。
增強的安全性
反向代理可以掩蓋原始服務器的 IP 地址和其他特徵。 因此,您網站的原始服務器可以更好地保持其匿名性,從而顯著提高其安全性。
由於反向代理將在到達主服務器之前接收所有流量,因此任何攻擊者或黑客都會發現很難將您的網站作為 DDoS 攻擊等安全威脅的目標。
您可以使用嚴格的防火牆來加強反向代理的安全性,以抵禦常見的網絡攻擊。 如果沒有安裝反向代理,就很難刪除惡意軟件或開始刪除。
像 HAProxy 這樣的反向代理可以將基本的 HTTP 訪問身份驗證添加到沒有啟用它的 Web 服務器。 您還可以使用反向代理為各種類型的請求添加集中式身份驗證。
強大的緩存
您可以通過緩存靜態和動態內容來使用反向代理來實現 Web 加速。 這可以減少源服務器上的負載,從而使網站更快。
例如,如果您的源服務器在美國,並且來自歐洲的用戶訪問您的網站,那麼您可以從歐洲的反向代理服務器提供您網站的緩存版本。 由於反向代理比原始服務器更接近用戶,因此網站加載時間會更短,從而使其表現出色。
Varnish 和 Nginx FastCGI 是用於緩存 Web 內容的反向代理的突出示例。 如果您的網站由 Kinsta 託管,則您不必擔心緩存,因為 Kinsta 會為您處理所有緩存工作。
卓越的壓縮
服務器響應會佔用大量帶寬。 在將它們發送到客戶端之前壓縮服務器響應(例如使用 gzip)可以減少所需的帶寬量,從而加快網絡上的服務器響應。
反向代理非常適合壓縮服務器響應,因為它位於源服務器和客戶端之間。
優化的 SSL 加密
為每個客戶端加密和解密 SSL/TLS 請求對於源服務器來說可能是非常繁重的。 反向代理可以承擔此任務以釋放源服務器的資源用於其他重要任務,例如提供內容。
卸載 SSL/TSL 加密和解密的另一個優點是減少地理上遠離源服務器的客戶端的延遲。
您還可以選擇具有專用 SSL/TLS 加速硬件的反向代理來進一步優化此任務。 這種反向代理稱為 SSL/TLS 終止代理。 Varnish 等一些服務器不支持 SSL/TSL 協議,因此 SSL/TSL 終止反向代理可以幫助保護通過它們的流量。
更好的 A/B 測試
大多數 A/B 測試工具都要求您使用外部 JavaScript 庫來加載它們的功能。 但是,加載第三方腳本會減慢您的頁面加載時間,並給用戶帶來不穩定的體驗。
相反,您可以使用反向代理在服務器級別本身創建兩個單獨的流。 例如,您可以使用 Nginx 的split_clients
或sticky route
方法來控制流量重定向。
您可以參考 Nginx 和 freeCodeCamp 的教程,了解更多關於使用反向代理執行 A/B 測試的信息。
監控和記錄流量
反向代理捕獲通過它的任何請求。 因此,您可以將它們用作監控和記錄流量的中心樞紐。 即使您使用多個 Web 服務器來託管您網站的所有組件,使用反向代理也可以更輕鬆地監控您網站的所有傳入和傳出數據。
最受歡迎的反向代理
根據 W3Techs,幾乎 83%的網站不使用他們監控的反向代理服務。

在使用反向代理(如上所列)的17%網站中,您會注意到其中大多數是 CDN。 這是因為大多數反向代理默認隱藏它們的存在以作為安全預防措施。 因此,您不能依賴像 W3Techs 這樣的網站監控服務來查找哪些反向代理是最受歡迎的。
根據我們的研究和經驗,當今最流行的反向代理是:
Nginx
Nginx 是一個開源的 Web 服務器,也可以作為反向代理。 除了用於託管網站外,它還是使用最廣泛的反向代理和負載平衡解決方案之一。 根據 Netcraft 的數據,2019 年 12 月有超過4.79 億台網絡服務器在使用 Nginx,使其成為網絡服務器市場份額的領導者。

Nginx 提供了上面討論的所有反向代理優勢,以及更多。 它提高了 Web 性能、安全性、可靠性和可擴展性。 你可以使用它的配置文件來配置 Nginx,它也是可熱重載的。 在 Kinsta,Nginx 反向代理是您可以使用的幾個高級插件之一。
但您也可以使用商業產品 Nginx Plus 來訪問基於 API 的配置選項和其他適用於大型企業網站的功能。
Kinsta 使用 Nginx 為其所有網站提供支持。 它在其參與的每個類別中都在 Review Signal 的頂級網絡託管狀態中排名。使用 Nginx 的其他一些主要公司是 MaxCDN、Cloudflare 和 Netflix。
將 Nginx 設置為基本的反向代理很簡單。 Nginx 還為您提供各種指令來根據您的要求自定義服務器的反向代理。 我們將在後面的部分討論如何做到這一點。 如果您是 Kinsta 客戶,您還將在同一部分了解如何對使用 Kinsta 託管的網站使用反向代理。
漆
Varnish 是一個帶有內置緩存引擎的開源 HTTP 反向代理。 它主要設計用於提供動態內容的高流量網站。 您還可以將 Varnish 用作負載平衡器、Web 應用防火牆 (WAF) 以及邊緣身份驗證和授權服務器。
它適用於所有現代版本的 Linux 和 FreeBSD,主要用作 Nginx 或 Apache Web 服務器的前端。 Varnish 強大且高度靈活的 Varnish 配置語言 (VCL) 允許您定義各種功能,例如處理 HTTP 請求、緩存以及連接到一個或多個 Web 服務器。
出於這個原因,許多 CDN 使用 Varnish 作為快速交付內容的主要基礎。
Varnish 還支持 Edge Side Includes (ESI),這是一種可以幫助您在其他網頁中重用一個網頁的部分的語言。 如果您的網站在不同頁面中使用大量重複內容,ESI 可以通過緩存常用部分來幫助您加快網站的頁面加載時間。
您可以使用 Varnish 的各種模塊 (VMOD) 來擴展它。 前往 Varnish 的官方教程,了解如何將 Varnish 設置為 WordPress 的反向代理。
阿帕奇交通服務器
Apache Traffic Server 是一個開源緩存代理服務器。 它因其快速、可擴展的特性而廣受歡迎。 它是雅虎開發的商業產品! 很久以前,但他們將其開源並將其捐贈給 Apache 基金會進行維護。
Comcast、Akamai、LinkedIn、Yahoo 和 Apple 等幾個主要的內容網絡和 CDN 都使用 Apache Traffic Server 來支持他們的技術。
您還可以使用 Apache HTTP Server ( Apache httpd ),一個 HTTP 服務器守護程序,在您的 Web 服務器上設置反向代理。 除了充當基本的 Web 服務器外,它還可以幫助您為用戶提供靜態和動態內容。 您將在本文後面學習如何將 Apache 設置為反向代理。
HAProxy
HAProxy 是一個開源的反向代理和負載均衡器。 它旨在與大多數現有 Web 服務器架構集成,包括 Linux 發行版和雲平台。 與 Nginx 類似,HAProxy 使用事件驅動的 I/O 模型,並支持跨多個工作進程拆分請求。
對於 HTTP 請求,HAProxy 即使在高負載下也表現得非常好。 互聯網上一些流量最高的網站,例如 Airbnb、Reddit、Instagram、Stack Overflow、Tumblr、GitHub 和 Imgur,都使用 HAProxy 來有效地交付他們的網站。

討論如何實現 HAProxy 超出了本文的範圍,但您可以參考他們的文檔以了解其工作原理。
注意: Traefik 和 Envoy 是 HAProxy 的另外兩個開源替代品。 它們既是高性能反向代理,又是具有許多高級功能的負載平衡器。
其他一些流行的反向代理是 AWS Elastic Load Balancer、GLBC、DigitalOcean Load Balancer 和 Google Cloud Load Balancer。 有關當今使用的頂級反向代理和負載均衡器的詳盡列表,您可以查看 Stackshare.io。
反向代理:WordPress 網站的用例
為 WordPress 網站使用反向代理主要有三個用例,包括在 Kinsta 託管的網站。

我們將僅在此示例中使用 Nginx,因為它是當今用於 WordPress 網站的最流行的反向代理。 但同樣的基本原則也適用於其他反向代理。
反向代理通常難以安裝、配置和支持。 出於這個原因,Kinsta 為您需要幫助設置的每個反向代理提供每月 50 美元的附加訂閱。 您可以聯繫 Kinsta 的支持團隊了解更多詳情。
1. 託管在同一台服務器上的主站點和代理站點
如果主站點和代理站點都託管在同一台服務器上,則主站點可以在 WordPress 安裝上運行,而單獨的 WordPress 安裝為代理站點提供動力。
由於您可以訪問站點及其共享 Web 服務器,因此您可以為主站點設置反向代理規則,然後將代理站點配置為從反向代理加載。
如果您在 Kinsta 託管這兩個站點,則可以聯繫 Kinsta 的支持團隊並請求他們為您設置反向代理。 這是您需要遵循的程序:
- 確保主站點和代理站點都託管在 Kinsta 上。 如果不是,那麼您可以手動或通過提交遷移請求將兩個站點遷移到 Kinsta 的環境。
- 打開支持票並向 Kinsta 的支持團隊提供域配置的清晰描述。 我大約需要一個工作日來設置反向代理。
- Kinsta 將在主站點上設置相關的反向代理規則,並配置代理站點以通過反向代理加載。
以下是 Kinsta 用於通過反向代理加載子目錄站點的標準 Nginx 反向代理指令:
location ^~ /subfolder/ { proxy_pass http://subfolder.domain.com; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; }
在上面的代碼中,您需要將/subfolder/
佔位符替換為實際的子目錄名稱(例如/blog/
、 /shop/
)。 此外, http://subfolder.domain.com
//subfolder.domain.com 子域應與用於將反向代理指向代理站點的 URL 匹配。
location
指令包括插入符號和波浪號 ( ^~ ),告訴 Nginx 如果找到定義的字符串,它應該停止搜索進一步的匹配項並使用此處列出的指令。 在其文檔中了解有關 Nginx 反向代理指令的更多信息。
接下來,您需要配置代理站點以通過反向代理加載。 以下是 Kinsta 配置代理站點所遵循的標準步驟:
- 在加載代理站點的路徑上創建一個子目錄。 所有代理網站的文件都移動到此子目錄。
- 更新 Web 服務器的配置文件以將新子目錄定義為代理站點的根目錄。 此外,您需要添加重寫規則以從每個傳入請求的請求 URI 中刪除子目錄。
- 更新代理站點數據庫中的所有 URL 以匹配實時站點 URL(例如
example.com/blog
)。 - 使用
$_SERVER['HTTP_HOST']
定義編輯代理站點的wp-config.php
文件,將其指向主站點的 URL。 - 如果您使用的是 SSL 證書,那麼您需要在
wp-config.php
文件中定義嚴格的規則以避免重定向循環。
注意:代理站點不能創建與代理站點加載所在的同一子目錄重複的 URL。 例如,位於example.com/blog/blog
的代理站點無法在example.com/blog
創建頁面或目錄。
2. 僅託管在您的服務器上的代理站點
如果您只能訪問代理站點及其 Web 服務器,那麼您需要聯繫主站點的服務器管理員並要求他們為您設置反向代理規則。
需要為您的網站提供快速、安全且對開發人員友好的託管服務? Kinsta 在構建時考慮了 WordPress 開發人員,並提供了大量工具和強大的儀表板。 查看我們的計劃
為此,您必須遵循上述相同的步驟,但在這種情況下,您必須在兩個不同的服務器上配置規則。
要使用 Kinsta 託管您的代理站點,請向該站點添加一個指向反向代理的域。 通常,子域適合此目的(例如blog.example.com
)通過子目錄鏈接(例如example.com/blog
)加載代理站點。
在 Kinsta 上設置代理站點後,您可以聯繫 Kinsta 支持團隊以配置代理站點以通過反向代理加載。 此時,我們的支持團隊將需要您服務器的真實 IP,以便以正確計算訪問次數的方式完成設置過程。 如果由於某些提供商(例如 AWS CloudFront)的動態 IP 限製而無法提供靜態 IP,您的計劃將改為轉換為基於帶寬的類似計劃。
最後,在您的服務器上設置反向代理超出了 Kinsta 支持的範圍,因為只有服務器管理員可以處理它。
3. 僅託管在您的服務器上的主站點
如果您只能訪問主站點及其 Web 服務器,則應設置反向代理並配置其規則以從外部主機加載代理站點。 安裝和配置代理站點以通過反向代理加載是輔助服務器管理員的責任。
將您的主站點託管在 Kinsta 將授予您訪問 Kinsta 支持團隊的權限。 您可以向他們提出支持請求,以添加本文前面列出的標準反向代理規則。 如果需要,您還可以將任何其他自定義添加到這些規則中。
在這種情況下,您完全負責配置代理站點以通過反向代理正確加載它。
如何將 Nginx 設置為反向代理
如果 Kinsta 不託管您的網站並且您管理您的服務器,那麼您必須自己設置反向代理並將其配置為指向代理站點。
根據您的 Web 服務器的操作系統,您可以以不同的方式安裝 Nginx。 對於 Linux 發行版,您可以根據您的 Linux 發行版的版本使用各種 Nginx 包。
在下面的示例中,我們將主站點安裝在example.com
域名,而代理 WordPress 站點安裝在blog.domain.com
子域。 它們都由運行在 Ubuntu 18.04 上的 Web 服務器上的 Apache 提供支持。 我們將在主服務器上安裝和配置 Nginx 作為反向代理。
首先,通過 SSH 訪問服務器的終端。 然後使用apt-get
命令更新您的發行版的軟件包列表並在您的 Web 服務器上安裝 Nginx。
sudo apt update sudo apt install nginx
接下來,您需要將 Nginx 配置為代理 Apache 上託管的域的請求。 為此,請創建一個新的虛擬主機文件。 在這裡,我使用nano編輯器添加代碼,但您可以使用您選擇的任何代碼編輯器。
sudo nano /etc/nginx/sites-available/example.com.conf
然後通過添加以下server {...}
和location
塊來設置 Nginx 指令以將請求轉發到 Apache:
server { listen 80; server_name example.com www.example.com; index index.php; root /var/www/example.com/public # fallback for index.php location / { try_files $uri $uri/ /index.php?$query_string; }location /blog { proxy_pass http://blog.domain.com;proxy_http_version 1.1; proxy_cache_bypass $http_upgrade; # Proxy headers proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; proxy_set_header X-Forwarded-Host $host; proxy_set_header X-Forwarded-Port $server_port; # Proxy timeouts proxy_connect_timeout 60s; proxy_send_timeout 60s; proxy_read_timeout 60s; }
在上面的代碼中,我定義了一個由 Apache 服務器提供的子目錄example.com/blog
鏈接。 確保在proxy_pass
指令中使用代理網站的公共 IP 地址(或 URL)。 就我而言,我的代理網站託管在blog.domain.com
子域上。
注意:在進行任何更改之前,請確保代理網站已安裝並準備好提供服務。
您可以在 Nginx 的詳細指令索引中了解有關此處使用的所有反向代理指令的更多信息。
保存虛擬主機文件。 然後通過在/etc/nginx/sites-available
和/etc/nginx/sites-enabled
目錄中為名為example.com.conf
的文件創建符號鏈接來激活新的虛擬主機。
sudo ln -s /etc/nginx/sites-available/example.com.conf /etc/nginx/sites-enabled/example.com.conf
之後,測試 Nginx 是否有任何配置錯誤。
sudo nginx -t
如果沒有錯誤,請重新加載 Nginx 以強制執行更改。
sudo systemctl reload nginx
您現在已經成功地將 Nginx 設置為反向代理。 為了確認這一點,您可以使用 phpinfo() 函數來檢查您訪問代理站點時加載的 PHP 變量。
在SERVER_SOFTWARE
和DOCUMENT_ROOT
PHP 變量下,您將看到 Apache 在後端為該域提供服務。 但是HTTP_X_REAL_IP
和HTTP_X_FORWARDED_FOR
PHP 變量確認 Nginx 被用作反向代理來轉發請求。
您可以使用 fastcgi_cache 和 ngx_cache_purge 模塊加快通過 Nginx 為 WordPress 站點提供服務的速度。 第一個模塊將緩存您的站點,而第二個模塊將根據特定事件(例如發布或編輯 WordPress 帖子/頁面)自動清除緩存。
您可以使用 Nginx 緩存控制器 WordPress 插件直接從您的 WordPress 管理儀表板控制 Nginx 的代理服務器緩存。 如果您使用的是 WordPress 多站點安裝,那麼您可以使用 Nginx Helper 插件來執行相同的操作。
查看 Nginx 的主要文檔和 Nginx WordPress 設置指南,詳細了解如何使用 Nginx 和 WordPress。
如何將 Apache 設置為反向代理
在開始之前,請確保您有兩個網站在example.com
和blog.domain.com
上運行。 第一個網站可能是也可能不是 WordPress 網站,但第二個網站應該是 WordPress 網站,因為它主要用於加載位於example.com/blog
子目錄鏈接的根域的博客。
通過 SSH 打開服務器的終端並啟用 Apache 的代理模塊,開始配置 Apache。
sudo a2enmod proxy proxy_http ssl
運行上述命令很可能會重新啟動 Apache 以重新加載新定義的指令。
接下來,編輯主服務器的虛擬主機文件以創建反向代理。 這是您需要添加的代碼:
<VirtualHost *> DocumentRoot /var/www/app/public SSLProxyEngine On ProxyRequests off ProxyPass /blog http://blog.domain.com ProxyPassReverse /blog http://blog.domain.com </VirtualHost>
ProxyPass 指令將為指定的路徑創建一個反向代理,而 ProxyPassReverse 指令將攔截通過該反向代理髮送的 HTTP 響應標頭並重寫它們以匹配 Apache 服務器。
保存文件後,您需要通過在要求您停止編輯的行之前添加以下代碼來編輯wp-config.php
文件。
# ProxyPass Settings # overrides the variables below to ensure that any # request to /blog/* subdirectory is taken care of properly $_SERVER['REQUEST_URI'] = '/blog' . $_SERVER['REQUEST_URI']; $_SERVER['SCRIPT_NAME'] = '/blog' . $_SERVER['SCRIPT_NAME']; $_SERVER['PHP_SELF'] = '/blog' . $_SERVER['PHP_SELF'];
最後,您需要更新 WordPress 站點的數據庫以添加/blog
子目錄鏈接的配置值。 您可以通過運行以下 SQL 查詢來做到這一點:
UPDATE wp_options SET option_value = 'https://www.example.com/blog' WHERE option_name IN( 'siteurl', 'home' );
您現在應該能夠訪問https://www.example.com/blog
URL 並在http://blog.domain.com
子域加載您的 WordPress 站點,而無需更改其 URL。 您可以像往常一樣繼續使用 WordPress 來瀏覽、編寫、編輯和管理您的網站。
反向代理的限制
- 反向代理會帶來重大的安全風險,因為它可以讀取和更改通過它的所有流量。 如果您通過反向代理傳遞 HTTPS 流量,那麼它需要對傳遞的數據進行解密和重新加密。 這意味著它必須擁有 SSL/TLS 證書的私鑰。 因此,如果任何惡意方可以破壞您的反向代理,他們可以記錄密碼並將惡意軟件注入您的網站。
- 如果您或您的用戶無法直接訪問您的主服務器,那麼使用反向代理可能會導致單點故障。 例如,如果您使用反向代理作為前端來服務多個域,那麼它的中斷可能會導致所有域同時脫機。
- 如果您依賴第三方反向代理(例如 Cloudflare),那麼您就是在將您網站的敏感信息交給他們。 雖然他們是值得信賴的,但您無法預測它可能會導致什麼。
- 在通過反向代理加載的網站上恢復備份或推送臨時站點可能會導致代理站點停止正確加載。
在 CDN 和反向代理之間進行選擇
CDN 是一種高級形式的反向代理,大部分配置和維護由第三方負責。 它們可以為您的 WordPress 網站提供驚人的性能優勢,而您只需付出很小的努力。
CDN 不僅可以緩存內容並將其快速提供給用戶,還可以減少源服務器上的負載、降低帶寬成本、提供額外的安全層、提高網站的 SEO 並幫助您更好地擴展網站。
您會注意到 CDN 提供的大部分優勢與反向代理提供的優勢相同。 那麼,您應該選擇 CDN 而不是反向代理,反之亦然?
沒有理由你必須只接受一個。 如果您已經安裝了反向代理,您仍然會看到使用 CDN 的速度和性能提升。 它們的緩存層都很好,如果您有任何獨特的請求處理需求(例如動態內容、電子商務),那麼您可以使用 CDN 或反向代理傳遞的一些自定義標頭輕鬆配置它。
概括
WordPress 非常靈活。 您可以將其用作博客、電子商務網站,甚至是學習管理系統。 在大多數情況下,您可以自定義 WordPress 以滿足您的獨特需求。
但是,有時您可能必須使用單獨的域或輔助服務器來託管其他站點。 如前所述,這可能是因為大型企業網站使用了不同的技術堆棧,或者為預先存在的非 WordPress 網站啟動了 WordPress 博客。
反向代理可以在這兩種情況下提供幫助,幫助您充分利用 WordPress,而無需放棄主網站並重新開始。