我正准备配置位于某个数据中心的远程服务器。
该服务器将分配单个公共 IP。
该服务器将安装某种虚拟机管理程序 (KVM 或 Xen)。
虚拟机管理程序将托管多个虚拟设备 (Web 服务器、私有云、项目管理等)。
大多数设备都有某种 Web 界面。
我希望这些 Web 界面可以通过不同的主机名从互联网访问,例如:
SomeApliance.MyDomain.com
OtherApliance.MyDomain.com
如何通过分配给主机的单个公共 IP 来实现这一点?
我应该使用某种代理吗?如果是,那么这个代理应该有自己的虚拟机还是主机的一部分?也许有类似独立 mod_rewrite 的东西可以做到这一点?或者也许我应该使用 IP 表来做到这一点?
我不需要精确的答案。只要给我指明正确的方向就行。谷歌搜索短语也可以。
在我看来,这应该是一个常见问题,但我什么也没找到。
答案1
是的,对于这种用例,需要代理(否则您必须使用非标准端口发布 Web 服务)
您可以在主机或单独的虚拟机上安装代理(例如带有 mod_proxy 的 Apache)。
如果您选择在主机上安装代理:
- 安装所需的软件包(例如 apache 和 mod_proxy)
- 向主机添加一个或多个用于连接虚拟机的网桥
- 为网桥指定一个 IP 地址,以便物理主机可以与虚拟机进行通信
如果您选择在虚拟机中安装代理:
- 创建一个桥接器,用于连接代理的外部端,并为其指定一个(私有)IP(我们称之为 br0)
- 为虚拟机提供一个连接到 br0 的接口,其 IP 地址与 br0 位于同一网络上
- 使用 br0 的 IP 地址作为代理虚拟机的默认网关
- 在主机的公共接口上启用 nat(SNAT),以便来自代理的流量可以通过(唯一)公共 IP 退出
- 将所需端口(80、443?)从主机公共 IP 转发(DNAT)到代理“外部”IP