Linux
如何按主機名轉發到防火牆後的不同網路主機–mod_proxy?
我需要一個快速的解決方案,允許我在防火牆後面託管多個 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>