我正在寻找一种解决方案,可以根据主机名将一个公共 IP 地址和一个特定端口转发到不同的机器(截至目前,我只需要它用于 HTTP)。
当前设置是商用路由器上的 NAT(它仅提供简单的公共端口到私有 IP 地址/端口转发)。如果需要,我可以在路由器前添加 Windows Server 2008 R2 机器,但我宁愿不这样做。
因此,理想情况下,我希望拥有当前设置,并在其中一台 Windows 服务器上完成转发。可以这样做吗?
答案1
听起来你想要的实际上是基于名称的虚拟主机。
http://httpd.apache.org/docs/2.2/mod/core.html#namevirtualhost
答案2
尝试使用 Apache 的基于名称的虚拟主机和 mod_proxy 将其重定向到另一个主机。
<VirtualHost *:80>
ServerName www.example.com
ProxyRequests Off
<Proxy *>
Order deny,allow
Allow from all
</Proxy>
ProxyPreserveHost On
ProxyPass / http://192.168.254.197/
ProxyPassReverse / http://192.168.254.197/
</VirtualHost>
<VirtualHost *:80>
ServerName www.other_example.com
ProxyRequests Off
<Proxy *>
Order deny,allow
Allow from all
</Proxy>
ProxyPreserveHost On
ProxyPass / http://192.168.254.198/
ProxyPassReverse / http://192.168.254.198/
</VirtualHost>
上述操作将捕获您前端 IP 地址上的 example.com 和 other_example.com,然后将它们分别传递到不同的 IP 地址。