设置VPS托pipe

我试图build立自己的虚拟主机。 它不会是一个付费服务,只是一个我和一些书呆子朋友的实验。

我希望能够做到的是:在一个外部IP上运行多个虚拟服务器。 这些服务器可以运行任何从Minecraft服务器到简单的http服务器。 他们还需要通过SSH访问。

我没有得到的是我如何使用域名解决这些服务器。 我已经做了一些调查,发现我可以在Apache上使用Vhosts。 但是这只适用于http服务器。 也有人build议我会使用反向代理(鱿鱼),但这也只适用于http请求。

我可以为不同的服务器使用不同的端口,但那不是理想的,也不是我想要的。

有人可以build议一个设置? 也许一些教程或任何东西。

如果您只有一个IP地址(除了您build议的http代理方法),则不能通过域名访问虚拟机。 只花一些额外的钱,买一个/ 29 IP地址类。

至于虚拟化,你有一些select。 现在的主战是在Xen和KVM之间,每一个都有激烈的支持者。 我目前正在使用Xen,我很高兴。

要实现服务的完全分离,您需要利用虚拟机。 可以将它们configuration为在单个物理服务器上共享相同的networking接口和IP。 至less,在将连接传递给虚拟机以进行HTTP通信之前,您可能必须在主机上使用第7层防火墙路由stream量。 除非修改OpenSSH守护进程,否则SSH可能只需要使用不同的端口。 在这个configuration中,你可以在一台主机上产生许多完全独立的“虚拟操作系统”。 然后,您可以将虚拟机分配给您的每个朋友,每个虚拟机可能会在其内部运行多个虚拟HTTP站点。 虚拟机的行为就像一个普通的操作系统,不知道它实际上是虚拟化的,与并行操作系统共享CPU和内存资源。

我不确定你是否真的需要这种types的分离,但是这将完成你正在寻找的东西。 不要指望它的负载能够很好地扩展,而不会在硬件上投入一些资金。

是啊,我觉得你的post有点混乱。 虚拟机(VM)就是这样; 一个逻辑的,完全独立的,我们会说,你安装了一个操作系统,如Linux或Windows的模拟硬件的实例。

整个HTTP和DNS概念与虚拟机无关! 像stackexchange.com这样的域可以托pipe在多个物理或虚拟机器上,以实现负载平衡,或者只是将内容分开。

您可以在一个IP地址上托pipe多个域(stackoverflow.com,stackexchange.com)。 这是HTTP 1.1规范的一部分。 在Apache下称为基于名称的虚拟主机(简称vhosts)。 Microsoft IIS中存在相同的function。

由于Web服务器软件(Apache和IIS)在操作系统(分别为Linux和Windows)的上下文中运行,您将需要VM或物理硬件来运行OS和Web服务器软件(apache,IIS)。

Apache / IIS(以及其他)将自己绑定到操作系统中的IP堆栈,而这又一次运行在VM或物理硬件上。 IP栈和与pipe理IP地址,IPparsing(称为parsing器)相关的所有相关pipe理都是OS特定的。 例如,在Linux下,你可以在很多发行版上处理/etc/resolv.conf,或者你可以设置BIND来响应DNS请求,把诸如stackoverflow.com之类的东西转换成IP地址。

所以你可以有一个运行Apache的Linux虚拟机,并在一个IP地址上托pipe多个网站!

诀窍是使DNS和你的networking服务器软件之间的联姻全部一起工作或一致,以便不同的协议(http,dns)是正确的。 注意:您也可以在虚拟机之外托pipeDNS。

希望这可以帮助

要回答关于如何让一个公共IP访问运行网站的多个虚拟机或物理计算机的问题的其他部分,您需要一个反向代理。 Apache做到这一点; 不知道有关IIS和HAProxy也可以做到这一点。

例如,您可以将HAProxy监听单个公共IP,然后将stream量路由到专用IP上正确的内部服务器。 请记住,这里有双向通信 – 所以您的Web服务器的回复需要显示为来自单个IP。

我不确定它是否可行,这只是我正在考虑的事情:
您可以尝试将IPv6地址分配给每台通过IPv4地址隧道传输的机器。