如何通过主机名转发到防火墙后面的不同网络主机--mod_proxy?

如何通过主机名转发到防火墙后面的不同网络主机--mod_proxy?

我需要一个快速解决方案,允许我在防火墙后面托管多个 Web 服务器。它们位于不同的计算机上,因此我无法使用 Apache 虚拟主机。我也不想为每台机器使用不同的非标准端口。

问题是我的路由器只能将端口 443 转发到一台机器。我认为最好的解决方案是使用反向代理或代理转发,但我一直不明白如何设置它。

  • 我假设我可以将所有 443 流量转发到其中一台服务器并使其成为代理服务器。
  • 所有服务器仅接受 html 流量。
  • 我正在使用 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,因此可以使用它吗?

答案1

它们在不同的计算机上,所以我不能使用 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>

相关内容