![在单个静态 IP 上为多个域名 (3) 搭建 DIY VPS 托管](https://linux22.com/image/633032/%E5%9C%A8%E5%8D%95%E4%B8%AA%E9%9D%99%E6%80%81%20IP%20%E4%B8%8A%E4%B8%BA%E5%A4%9A%E4%B8%AA%E5%9F%9F%E5%90%8D%20(3)%20%E6%90%AD%E5%BB%BA%20DIY%20VPS%20%E6%89%98%E7%AE%A1%20.png)
并感谢您的意见。
我想做的事: 例如,我想在一个静态 IP 地址上为自己和两个客户端托管一些应用程序 Web 和电子邮件,主要是为了学习,并且可能考虑为几个用户数量较少的长期客户提供一些有限的托管。
我拥有的 我在配备 32GB Ram 的 XenServer Xeon 上启动并运行,使用 100MB 连接,但使用单个静态 IP。
我想弄清楚的是 我想尝试在 xenserver 上设置几个虚拟机,运行 IBM Lotus Domino(这使用多个端口)例如 80、25、1352。因此,我需要弄清楚如何根据域名将流量转发到适当的服务器。例如
单个外部 WAN IP -> domain1.com:80 -> VM1:80 单个外部 WAN IP -> domain1.com:1352 -> VM1:1352
单个外部 WAN IP -> domain2.com:80 -> VM2:80 单个外部 WAN IP -> domain2.com:1352 -> VM2:1352
单个外部 WAN IP -> domain3.com:80 -> VM3:80(运行 Cpanel 用于网络托管)
我知道反向代理可能是个好办法。NGINX 或 POUND,但似乎只适用于 Web 应用程序,不适用于其他应用程序。我也偶然发现了 Citrix Netscaler,然后彻底糊涂了。我还看到了使用 DD-WRT 的 iptables 之类的东西。一定有办法做到这一点。我很感激任何人提供的意见。肯定有人在某个地方这样做。
我对路由器(定制或其他)或设备(虚拟或其他)持开放态度,但我更喜欢基于软件的东西,比如虚拟设备之类的。有什么想法吗?
谢谢
谢恩
答案1
所以我需要弄清楚如何根据域名将流量转发到适当的服务器
除非存在应用层规范(例如 HTTP 的 Host 标头),否则这是不可能的。如果没有该 IP,则无法了解 DNS,因此您无法基于它进行转发。
请参阅前几天的这个基本相似的问题:我可以使用带有私有 NAT 地址的 DNS 吗?
答案2
首先,建议设置 IPv6 并将 /60 路由到每个 VM。这样,拥有 IPv6 的用户将不会遇到与代理相关的任何问题,因为他们的流量将直接路由到所需的主机。
此外,虚拟机上的 IPv6 为您提供了一个代理流量的地址,这在某些情况下会更容易,因为代理可以依靠 DNS 来找到后端。
反向代理是处理 HTTP 流量的最佳方式。只要客户端和代理都支持 SNI,反向代理也可以处理 HTTPS 流量。即使 Web 服务器不支持 SNI,反向代理也能正常工作。这不必局限于端口 80 和 443。代理可以配置为在任意端口上接收流量。
通过在 IPv4 地址上安装邮件中继,可以处理 SMTP。必须小心确保它不会被滥用来中继垃圾邮件。我建议设置防火墙规则,使中继无法连接到外部 SMTP 服务器。防火墙可以允许从外部到中继的 SMTP 连接、从中继通过 IPv6 到虚拟机的 SMTP 连接以及从虚拟机到外部世界的 SMTP 连接(以 IPv6 或 IPv4 的形式,这显然必须经过 NAT)。
原则上可以支持DNS,但不知道是否有人实现了对它的支持。
如果您有其他特定协议,我很乐意就如何支持它们提出建议。我不知道有任何其他协议可以提前发送域名,以便这样的前端能够根据域名进行调度,但我想了解其他协议。
我已经实施一我自己有这样的前端,但目前只有 HTTP 和 HTTPS,这是迄今为止最容易支持的协议。