将内部虚拟机映射到一个域以供外部访问

将内部虚拟机映射到一个域以供外部访问

我遇到了以下情况,这让我有点陷入困境,因为这不是我真正的专业领域。

因此,我们有一个内部服务器,其中包含多个虚拟机,每个虚拟机托管一个或多个应用程序,在特定端口上运行。在内部,可以通过虚拟机 IP 和端口或虚拟机域名和端口(vm1.domain.com:port、vm2.domain.com:port 等)访问这些应用程序。

由于我们只有一个外部 IP,我们通过 NoIP 映射它,如果我们想从外部访问这些应用程序,它将是这样的:ourname.ddns.net:port。由于我们有多个应用程序,每个应用程序将使用相同的地址但不同的端口进行访问。

我们正在尝试改变这种情况,因此我们决定设置一个带有 Nginx 的虚拟机来处理所有路由。这有助于我们通过虚拟机名称和应用程序名称访问所有应用程序:nginxvm.domain.com/app1、nginxvm.domain.com/app2 等。

我们的最终目标是获得一个域名,以便我们可以使用 ournewdomain.com/app1、ournewdomain.com/app2 或 app1.ournewdomain.com、app2.ournewdomain.com 从外部访问应用程序,而无需任何端口。

问题是,我不确定从这一点开始该怎么做以及要寻找什么。这需要什么?有没有办法获取域名并在仪表板(如 cPanel)中设置所有这些,或者它比这更技术化一点?

正如我提到的,这不是我的专业领域,我有点陷入困境,所以任何帮助或建议都会很感激。

答案1

获取域名:首先,如果您还没有域名,则需要从域名注册商处购买域名。设置 DNS:获得域名后,您需要配置 DNS 记录以指向服务器的 IP 地址。这通常涉及为域本身创建 A 记录(例如 ournewdomain.com),并可能为子域创建其他记录(例如 app1.ournewdomain.com)。配置 Nginx:在您的服务器上设置 Nginx 以充当反向代理。您将为要将流量路由到的每个子域或子目录创建服务器块(虚拟主机)。每个服务器块将指定相应应用程序的位置。以下是用于路由到不同应用程序的 Nginx 配置的基本示例:

服务器 { 监听 80; 服务器名称 ournewdomain.com;

location /app1 {
    proxy_pass http://vm1.domain.com:port;
}

location /app2 {
    proxy_pass http://vm2.domain.com:port;
}

}

相关内容