![如何根据 url 中的域将 Web 请求路由到我的专用网络?](https://linux22.com/image/58/%E5%A6%82%E4%BD%95%E6%A0%B9%E6%8D%AE%20url%20%E4%B8%AD%E7%9A%84%E5%9F%9F%E5%B0%86%20Web%20%E8%AF%B7%E6%B1%82%E8%B7%AF%E7%94%B1%E5%88%B0%E6%88%91%E7%9A%84%E4%B8%93%E7%94%A8%E7%BD%91%E7%BB%9C%EF%BC%9F.png)
设想:
由于IP数量有限,多个域名会被解析为同一个IP地址。然而,这些域可能并不都运行在同一个网络服务器、虚拟机甚至专用机器上。因此,我想根据 url 中的域将进入专用网络的域路由到正确的位置。
我怎样才能做到这一点?
答案1
大多数路由器/防火墙允许基于特定端口重定向流量,例如所有 SMTP 流量(端口 25)都重定向到 192.168.1.1。
但是,如果您有多个服务器来处理流量(每个域 1 个服务器)。您需要安装诸如反向代理之类的东西(nginx支持 HTTP、IMAP、POP3)。例如,所有到端口 80 的流量都会被重定向到192.168.1.2
运行 nginx 的端口,并且根据主机名将重定向到localhost
或192.168.1.4
。
答案2
我不确定我是否完全理解你的问题。如果这样做,您将拥有多台计算机作为 NAT 后面的 HTTP 服务器运行。当某个请求到达时,您希望将其转发到您的一台服务器,对吧?
如果您使用 apache 和 mod_rewrite,您也许可以这样提取:
干杯。
答案3
我已经使用类似的方法做了一些事情代理通行证Apache 中 mod_proxy 下的指令。
首先,使用基于名称的虚拟主机要允许不同的域使用相同的 IP 托管不同的站点,那么对于与内部网络服务器关联的域,您有如下配置:
# Within your VirtualHost definition
ServerName somedomain.com
ProxyPass / http://10.0.1.42/
ProxyPassReverse / http://10.0.1.42/
这将导致所有请求都http://somedomain.com
透明地代理到托管在 上的内部站点http://10.0.1.42
。
华泰
答案4
不久前我也在寻找同样的东西。从来没有抽出时间去做,但我认为这可能有用。
使用mod
_proxy 模块并使用该noproxy
指令。