在 KVM linux 中搭建服务器

在 KVM linux 中搭建服务器

我拥有一台 Linux 服务器。现在有几个用户想在上面构建 Web 服务,但他们需要不同的环境。为了方便起见,我为每个用户都赋予一个 KVM 虚拟机 root 权限。

但显然Linux服务器只有一个IP,如何将外部的请求交给相应的虚拟机呢?

(我预计它有点复杂。如果是这样,我至少需要一些我可以开始阅读的文档/网站。)

答案1

假设我正确理解了你的问题,你将需要两项服务。

  1. ssh 代理
  2. web 代理(我建议使用 nginx / HA-Proxy)。

ssh 代理服务是通过使用 SSH 密钥和 command="" 指令实现的,您已将密钥 auth 放入您的代理服务器中,并使用 /bin/false 作为 shell,然后定义 command="ssh user@real-server" ssh-rsa ... 行。

使用 webproxy 根据主机名/uri 将连接传递到相关后端。

现在这远非美好,但它是可能的,如果可用的话,只需为机器本身分配一些公共 IP 地址就会容易得多。

答案2

其实并没有那么复杂...您可以要求您的提供商提供具有多个 IP 的商务级连接。

否则,您必须为他们提供不同的主机名,并通过虚拟主机指令而不是虚拟机将访客引导到他们的站点。

或者您可以尝试创建一个虚拟机,通过解析传入的请求并从那里重定向到内部站点。

答案3

您需要的是所谓的反向代理。这种代理的工作原理是获取您拥有的一个 IP 上的所有流量,解析主机标头并为外部客户端执行请求。

操作指南链接:http://www.apachetutor.org/admin/reverseproxies

这样,您只需将普通的 VirtualHosts 添加到您的反向代理配置中,并在 Vhosts 内配置反向代理部分。还使您能够轻松使用通配符。

但请注意,这仅适用于 HTTP。有一个 HTTPS 扩展可用于实现相同的功能,但据我所知,浏览器支持不佳。

您还需要简单的仅主机网络。这样,您可以使用 iptables 将 SSH 端口转发到内部 IP 地址,并使用反向代理执行 HTTP。

另外,我认为你想要实现的目标很愚蠢。不要将 root 权限交给用户,并使用某种形式的批量托管控制面板。这是最省力的方式 :)

希望能帮助到你 :)

答案4

如果我理解正确的话,您在物理服务器上创建了一个 KVM 虚拟机,并授予用户该虚拟机的 root 访问权限?

物理服务器是位于您的公司场所内还是位于数据中心外?

如果完全由您控制,您可以使用 KVM 桥接网络为每个 KVM 分配一个专用 IP。配置桥接取决于 Linux 版本。

以下是如何在CentOS/红帽

如果您的服务器位于 Colo/off site,那么桥接也是可能的。

如果您不能使用桥接,另一种选择是使用 NAT,但在我看来这很麻烦。

相关内容