这显然是可能的,因为这是所有网络农场所做的,但我不是网络农场。
我确实具有相当不错的技术能力,主要是 Windows,但我很乐意设置一个简单的 Linux 机器来实现这一点。
目前我有一个面向互联网的路由器,它允许流量通过多个端口传输到一台机器。这很好用,我可以在那台机器上运行多个网站,但是我希望能够拦截流量并根据域名发送到不同的机器。
Reporting.example.com => PC1
Demos.example.com => PC2
MySite.example.com => PC1
Three.example.com => PC3
(all domain obviously resolve to my single internet facing IP address).
我可以获得可以执行此操作的路由器吗(我知道端口转发等,但它们只在端口上起作用),我可以用转发器设置中间 linux/XP 机箱吗?有简单的解决方案吗?
答案1
这不是唯一或最好的方法,但这就是我要采取的方法。如果我误解了你问题中的任何事实,请纠正我
路由器拥有 WAN IP。如果您的路由器允许指定主机名到 IP 映射,您可以尝试通过将每个域映射到网络的内部 IP 来添加它。
如果路由器无法做到这一点,您可以在一个系统上设置反向代理,以按域将流量转发到后端系统。这很方便,因为您也可以将其用于故障转移。
这是 apache 作为反向代理的 vhost 配置示例。
ServerName Demos.example.com
ProxyPreserveHost On
ProxyTimeout 5400
ProxyPass / http://LAN_IP1 max=20 ttl=5000 retry=300
ProxyPassReverse / http://LAN_IP1/
ps 您不需要拥有专用的反向代理服务器,您可以使用现有系统之一来实现这一点,这可以在本地为一个域提供服务并代理其他域。此特定系统必须是您的路由器将所有网络流量转发到的系统。
答案2
Vangels 的解决方案非常有效,我在这里已经为其他人澄清了。
这需要放入 http.conf 文件中
<VirtualHost *:80>
ServerName Demos.example.com
ProxyPreserveHost On
ProxyTimeout 5400
ProxyPass / http://LAN_IP1 max=20 ttl=5000 retry=300
ProxyPassReverse / http://LAN_IP1/
</VirtualHost >
您还需要启用以下模块
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_http_module modules/mod_proxy_http.so