Linux

如何按主機名轉發到防火牆後的不同網路主機–mod_proxy?

  • September 27, 2017

我需要一個快速的解決方案,允許我在防火牆後面託管多個 Web 伺服器。它們在不同的電腦上,所以我不能使用 apache 虛擬主機。我也不想為每台機器使用不同的非標準埠。

問題是我的路由器只能將埠 443 轉發到一台機器。我認為最好的解決方案是使用反向代理或代理轉發,但我一直無法理解如何設置它。

  • 我假設我可以將所有 443 流量轉發到其中一台伺服器並使其成為代理伺服器。
  • 所有伺服器只接受 htmls 流量。
  • 我正在使用 DDNS,所有伺服器都解析為相同的 WAN IP 地址。

設置:

  • server1.domain.com = 代理和 wiki 伺服器
  • server2.domain.com = 文件伺服器
  • server3.domain.com = owncloud 伺服器

我嘗試將以下內容/etc/apache2/conf-available/proxy-pass.conf放在 server1 上:

SSLProxyEngine on
ProxyPass "/directory"  "https://server2.domain.com/directory" 
ProxyPass "/owncloud"  "https://server3.domain.com/owncloud" 

這行得通,但這不是我要找的。

無論目錄如何,我都需要將所有流量引導到傳入 URL 域名指定的伺服器,因為在基本 URL 之後有很多子目錄。

就像是:

ProxyPass "https://server2.domain.com"  "https://server2.domain.com" 
ProxyPass "https://server3.domain.com"  "https://server3.domain.com"

我應該尋找另一種解決方案,例如pound,還是有辦法使用 apache. 我想我已經安裝了 apache,所以使用它嗎?

它們在不同的電腦上,所以我不能使用 apache 虛擬主機

實際上,這正是您需要做的;)

/手冊沒有明確說明,但是您可以通過在虛擬主機條目中創建根 URL、ProxyPass 指令的目標來反向代理特定主機的所有內容:

<VirtualHost *:80>
 ServerName host.example.com
 ProxyPass / http://internalserver.example.net/
 ProxyPassReverse / http://internalserver.example.net/
</VirtualHost>
<VirtualHost *:80>
 ServerName host2.example.com
 ProxyPass / http://other-internalserver.example.net/
 ProxyPassReverse / http://other-internalserver.example.net/
</VirtualHost>

引用自:https://serverfault.com/questions/875817