Redirect 添加指向相同IP但不同端口的子域

Redirect 添加指向相同IP但不同端口的子域,redirect,dns,subdomain,nat,ovh,Redirect,Dns,Subdomain,Nat,Ovh,我在ovh.com注册了一个域名,比如说它叫domain.com 该域指向路由器的公共IP,然后我将路由器的https端口443重定向到服务器端口443。因此,当我们转到domain.com时,它会重定向到我的服务器:443 更准确地说,domain.com只是重定向到我路由器的公共IP。例如,如果我使用一个图形数据库管理器,我可以告诉他服务器地址是domain.com:[SGBD port],它会工作 但我所有的应用程序都运行在同一台服务器上。为了增加一点安全性,我没有对所有协议使用常规端口。

我在ovh.com注册了一个域名,比如说它叫domain.com

该域指向路由器的公共IP,然后我将路由器的https端口443重定向到服务器端口443。因此,当我们转到domain.com时,它会重定向到我的服务器:443

更准确地说,domain.com只是重定向到我路由器的公共IP。例如,如果我使用一个图形数据库管理器,我可以告诉他服务器地址是domain.com:[SGBD port],它会工作

但我所有的应用程序都运行在同一台服务器上。为了增加一点安全性,我没有对所有协议使用常规端口。假设我的端口如下所示:

  • 吉特:50000
  • 新加坡元:55000
  • 云量:60000
  • 网站65000
以及其他一些端口,例如一些介于40000和50000之间的TCP端口

我的git和我的云有一个图形管理器,我可以在任何地方通过在我的web浏览器中键入domain.com:50000或domain.com:60000来访问它。我在所有软件上使用相同的URL。domain.com:50000用于我的git客户端,domain.com:55000用于我的数据库客户端等等

这种方法非常有效,但有两个问题困扰着我:

首先,我必须告诉所有可能使用我的应用程序的人端口号。但就像我说的,为了安全起见,我不使用普通的端口号,所以我不想和大家分享这些号码

第二个问题更重要: 当我在某处,例如在工作时,防火墙可能会阻止我使用的端口号。所以我的个人git是不可访问的,我的云也是如此

为了一次性解决这些问题,我想在我的域上添加子域,并将这些子域重定向到我的不同端口。例如:

  • 网站:domain.com:65000
  • git.domain.com==>domain.com:50000
  • SGBD.domain.com==>domain.com:55000
  • cloud.domain.com==>domain.com:60000
因此,在我看来,使用这个解决方案,我可以在浏览器中键入git.domain.com,通过https启动通信(https端口几乎从未被阻止),然后将其从OVH重定向到路由器的端口50000,然后路由器将其重定向到服务器的git端口

但很明显,这是一个很好的事实

在创建子域时(至少在OVH上?),我们不能指定端口。所以我无法设置git.domain.com是否重定向到myRouterIp:50000,但只能重定向到myRouterIp。因此,使用web浏览器,键入git.domain.com将重定向到myRouterIp:443,这已经被我的网站占用


所以我有点困惑。我是否必须为每个应用程序购买一个具有不同公共IP的路由器,然后使所有不同的子域指向不同的路由器?我几乎可以肯定这有点可笑。您认为我可以如何解决此问题?

正如您正确注意到的,在DNS控制台中,您不能指定端口;原因是DNS不关心端口,它的唯一目的是将主机名解析为IP地址

对于您的问题来说,另一件重要的事情是,大多数(非http)应用程序客户端,即使它们使用友好的主机名,也会在启动到路由器/服务器的连接之前将该名称解析为IP地址,然后使用该IP地址与路由器/服务器通信。这意味着当请求到达路由器/服务器上的端口时,路由器/服务器将无法确定最初使用的主机名。 很少有例外的是HTTP,浏览器总是在
Host
HTTP头中发送请求的主机名。这意味着您可以在同一端口上的一个IP地址上运行多个不同的网站(例如,共享web主机就是这样工作的)。设置此项应该非常简单,但可能超出范围,因此,请尝试或

对于其他(非HTTP服务),唯一的解决方案是在不同的端口上运行它们(您已经这样做了),或者拥有多个公共IP地址(可能很难从ISP获得)。此外,在一些随机的非默认端口上运行非http服务(并将端口号告诉用户)可能(非常明显)比在各自的默认端口上运行它们更安全


根据您的使用情况,另一种可能的解决方案是让您的用户使用安全VPN连接到您的本地网络,然后他们可以访问您的服务(将在不同的专用IP地址和您喜欢的任何端口上运行)。

您的所有子域应用程序都是通过http运行的吗协议?至少是网站、git和云。不是sgbd和tcp端口,甚至不是ssh、ftp等。感谢您给出了清晰的答案。我听说了htaccess或httpd.conf文件,在一个IP上运行多个网站的解决方案是否像您所说的那样?我还可以使用这些工具设置SSL证书。因此,对于非http服务,不同的端口是解决方案。这意味着我将永远无法在工作时访问我的git/cloud?是的,可以在httpd.conf(针对Apache Web服务器)中配置在一个网站上运行多个网站,google“Apache虚拟主机配置”。对于非http服务,请调查VPN。因此,SSL设置可能是进一步提问的好地方/