簡介
第三方擴充功能是非常有用的附加組件。這些功能可以讓您在設定和使用伺服器(例如 Apache HTTP)時的體驗變得更加簡單和便利。在需要的時候,您甚至可以使用 Apache 中的某些模組來運行反向代理。您可以從伺服器設定中移除一個層級,也可以使用模組來重定向連接。
在本指南中,我們將討論 Apache 以及與該伺服器平台相關的各種模組,例如 mod_proxy。我們還將介紹如何將其用作 反向代理 ,以將連接重定向到您的後端應用程式伺服器。
什麼是 Apache?
Apache 是一個 HTTP 伺服器 ,常用於與網頁相關的用途。但您也可以出於各種原因在多個平台上使用它。您可以按照我們的逐步教學在 Ubuntu 上安裝 Apache 網頁伺服器。此外,請參考本教學以了解如何使用 Let’s Encrypt 保護您的 Apache 伺服器。您也可以查看如何在 Ubuntu 20.04 上設定 Apache 虛擬主機.
您可以藉助外部模組進一步探索 Apache 的功能和實現。這些是第三方模組,您可以使用它們來執行與連接和設定相關的各種任務。例如,您可以使用 mod_rewrite 模組來執行基於規則的 URL 重寫。另一個模組是 mod_proxy。後者在社群中很大程度上未被充分利用。主要是因為許多人不知道其功能和應用的廣泛程度。顧名思義,Mod_proxy 可以幫助您為後端伺服器設置閘道器或代理。
讓我們來深入探討 mod_proxy 的細節,以及如何將其用作反向代理。
Mod_proxy:將 Apache 用作反向代理
正如您所知,mod_proxy 是一個模組。它是 Apache 中的一個模組,您可以使用它來建立和重定向各種連接。您也可以像系統上的任何其他模組一樣啟用和設定它。mod_proxy 的獨特之處在於它不僅僅是一個模組。事實上,它包含了一系列不同的模組,您可以在下方找到這些模組。每個模組都有其特定的功能。透過這種方式,mod_proxy 為您提供了非常多樣化的功能。
請看以下 mod_proxy 模組:
mod_proxy
這是主要的代理模組。在 Apache 中,您可以使用此模組來設定和管理各種連接。它還可以幫助您重定向連接。
mod_proxy_http
顧名思義,此模組處理 HTTP 和 HTTPS 協定。您可以使用此模組來實現這些協定的代理功能。
mod_proxy_ftp
Mod_proxy_ftp 適用於您處理 FTP 協定的時候。
mod_proxy_connect
此模組在您進行 SSL 隧道傳輸時非常有用。
mod_proxy_ajp
當您使用 AJP 協定時,可以使用 mod_proxy_ajp。
mod_proxy_wstunnel
這在您使用 WS 和 WSS 等 WebSocket 時非常有用。
mod_proxy_balancer
如果您希望使用負載平衡和叢集功能,則可以使用此模組。
mod_cache
正如預期的那樣,mod_cache 模組有助於快取目的。
mod_headers
您可以使用此模組來管理使用 HTTP 協定建立的標頭。
mod_deflate
此模組用於壓縮目的。
如果您想了解有關這些模組的更多詳細資訊,可以造訪 Apache 官方網站。官方文件也提供了更多關於 mod_proxy 和 Apache 本身的資訊。
如何安裝 Apache 和 mod_proxy?
以下是在您的系統上安裝 Apache 和 mod_proxy 的一些簡單步驟:
- 準備伺服器
首先,您需要確保您的雲端伺服器已準備就緒。為此,您需要將作業系統和相關軟體更新到最新版本。
使用以下指令來升級您的應用程式:
|
1 2 3 |
apt install aptitude aptitude update aptitude -y upgrade |
- 安裝必備套件
一旦您準備好伺服器,就需要為其配備必要的工具。為此,您需要安裝 build-essential 套件。此套件包含從原始碼安裝軟體所需的所有基本工具。您可以使用以下命令進行安裝:
|
1 |
aptitude install -y build-essential |
- 獲取模組和相依性
最後,您需要安裝模組和相依性。您可以透過執行以下命令來完成此操作:
|
1 |
aptitude install -y apache2 apache2-bin libxml2-dev |
啟用模組:如何使用代理連線設定 Apache?
在您開始設定 Apache 之前,您需要啟用您的模組。這些模組將協助您進行必要的設定並執行各種任務。
首先,您需要檢查系統上已經有哪些模組在運作。不僅如此,您還需要確保所有模組都已正確安裝且可以啟用。執行此命令將顯示 Apache 伺服器上所有可用的模組:
|
1 |
a2enmod |

如您所見,回應以詳細列表的形式顯示了所有可用的模組。瀏覽此列表並確定您要啟用哪些模組。為了讓 Apache 知道,您可以使用以下命令,並輸入您想要的模組來代替範例:
|
1 |
proxy proxy_ajp proxy_http rewrite deflate headers proxy_balancer proxy_connect proxy_html lbmethod_byrequests |
另一方面,您也可以單獨啟用每個模組。為此,您可以使用以下命令:
|
1 2 3 4 5 6 7 8 9 10 |
a2enmod proxy a2enmod proxy_http a2enmod proxy_ajp a2enmod rewrite a2enmod deflate a2enmod headers a2enmod proxy_balancer a2enmod proxy_connect a2enmod proxy_html a2enmod lbmethod_byrequests |
某些模組在您的伺服器上可能預設已啟用。您可能會想知道如何確認它們已啟用。為了確保所需的模組處於作用狀態,您可以嘗試啟用它兩次。這將保證該模組已啟用。
- 修改預設設定
首先,您必須變更預設設定。為此,您必須存取預設設定檔 000-default.conf。此檔案位於 /etc/apache2/sites-enabled 中。我們需要對其進行修改,使其獲得代理功能。
您將首先開啟 nano 文字編輯器來編輯預設的虛擬主機。您可以透過執行以下命令來完成此操作:
|
1 |
nano /etc/apache2/sites-enabled/000-default.conf |
我們將 mod_virtual host 和 mod_proxy 統稱為代理虛擬主機。現在,您可以套用以下設定。您可以根據您的系統和需求進行必要的變更:
|
1 2 3 4 5 6 7 |
<VirtualHost *:*> ProxyPreserveHost On ProxyPass / http://0.0.0.0:8080/ ProxyPassReverse / http://0.0.0.0:8080/ ServerName localhost </VirtualHost> |
按下 Ctrl + X 並輸入 Y 確認後,即可儲存並退出。
- 啟用負載平衡功能
負載平衡 有助於您有效地分配代理上的連線。當您使用多個後端應用程式伺服器而不是單個伺服器時,這是一個非常實用的想法。負載平衡功能將分配連線或「負載」。
要啟用此功能,您必須重複本指南前面提到的步驟。但是,在設定虛擬主機時,您需要使用以下設定:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
<VirtualHost *:*> <Proxy balancer://mycluster> # 定義後端伺服器: # 伺服器 1 BalancerMember http://0.0.0.0:8080/ # 伺服器 2 BalancerMember http://0.0.0.0:8081/ </Proxy> # 根據需要套用虛擬主機 (VH) 設定 # 然而,請將 ProxyPass 參數設定為 # 使用 "mycluster" 來平衡負載 ProxyPass / balancer://mycluster </VirtualHost> |
- 啟用反向代理支援
如果您正在處理 SSL 連線與憑證,您將需要讓虛擬主機支援您的反向代理。此次要虛擬主機必須具有以下設定。您需要執行先前步驟中的說明。您只需將設定選項替換為以下提到的選項即可:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
<VirtualHost *:443> SSLEngine On # 設定 SSL 憑證的路徑 # 用法:SSLCertificateFile /path/to/cert.pem SSLCertificateFile /etc/apache2/ssl/file.pem # 代理連線的伺服器,或; # 應用程式伺服器列表: # 用法: # ProxyPass / http://[IP 位址]:[連接埠]/ # ProxyPassReverse / http://[IP 位址]:[連接埠]/ # 範例: ProxyPass / http://0.0.0.0:8080/ ProxyPassReverse / http://0.0.0.0:8080/ # 或者,平衡負載: # ProxyPass / balancer://balancer_cluster_name </VirtualHost> |
您還需要啟用 SSL 模組才能使上述設定生效:
|
1 |
sudo a2enmod ssl |
- 重新啟動 Apache
所有設定皆已完成。最後,您可以重新啟動 Apache 伺服器以套用變更。您可以透過執行以下命令來重新啟動 Apache:
|
1 |
service apache2 restart |
結論
太棒了!您已成功在 Apache 伺服器中設定了反向代理閘道。現在 Apache 將會把傳入的連線重新導向至您後端的應用程式伺服器。
最棒的是,設定過程非常簡單且相當直覺。既然您已經知道具體的步驟,那麼在 Apache 中設定反向代理應該完全不會有任何問題。
祝您使用愉快!

留言
目前尚無留言。成為第一個留言的人吧。