如何在同一端口上将两个URL重定向到内部的两个不同的IP

时间:2011-11-29 23:00:24

标签: apache nat

这两台机器A和B是1个IP地址后面的NAT。

Url.xyz.com转到apache 2.2服务的端口80上的机器A. 和url2.xyz.com应该在该机器上的apache 2.2服务的端口80上进入机器B

我有机器A从我的网关获取所有入站端口80数据包... fyi

有一次我在机器A上设置了apache来做到这一点,但现在我正在努力 重新获得良好的配置。我在差异机器B上使用diff OS是有充分理由的....

我记得在机器A上的apache 2.2中使用设置虚拟服务器url2.xyz.com 端口80,然后将机器A和B上的主机文件设置为标题为:

的行

192.168.0.x url2.xyz.com url2

并在机器A上的apache中为url2.xyz.com设置文档根目录等于机器B上的文档根目录。(它不会占用空白字段....)

我要么在做梦,要么缺少轻微的设置步骤。任何帮助赞赏。我记得,从大约六个月前开始,机器A上的apache似乎读取了主机文件并做到了这一点。

净好结果是(希望)机器A上的虚拟服务器从机器B(或C,或D等等)获取内容

或者我会尝试从我的提供商那里获得另一个IP地址。

1 个答案:

答案 0 :(得分:3)

一种可能性是让机器A充当机器B的代理。意味着对两个域的所有请求都在端口80上进入机器A,然后在apache中设置基于名称的虚拟主机。然后,url2.xyz.com的虚拟主机将请求转发给机器B.

这样的事情:

机器A上的虚拟主机:

<VirtualHost *:80>
ServerName url1.xyz.com
DocumentRoot /var/www/url1
</VirtualHost>

<VirtualHost *:80>
ServerName url2.xyz.com
ProxyPass / http://url2.machineB/
ProxyPassReverse / http://url2.machineB/
</VirtualHost>

然后在机器A上定义url2.machineB以指向机器B的IP地址。您可以通过在文件/ etc / hosts中添加一行来完成此操作。然后在机器B上创建一个apache虚拟主机来监听该域,如下所示:

<ViirtualHost *:80>
ServerName url2.machineB
DocumentRoot /var/www/url2
</VirtualHost>

这可能不是解决方案,但应该给你一个选择。有关代理的更多信息,请参阅http://httpd.apache.org/docs/2.2/mod/mod_proxy.html