我在ovh.com注册了一个域名,假设它叫做domain.com。
此域指向我的路由器的公共IP,然后我将路由器的https端口443重定向到我的服务器端口443.因此,当我们转到domain.com时,它会重定向到我的服务器:443。
为了更准确,domain.com只是重定向到我的路由器的公共IP。因此,例如,如果我使用图形数据库管理器,我可以告诉他服务器地址是domain.com:[SGBD端口],它将工作。
但我的所有应用程序都在同一台服务器上运行。为了增加一点安全性,我没有使用通常的端口用于所有协议。所以我们说我的端口如下:
和其他一些,例如40000和50000之间的一些TCP端口。
我的git和我的云有一个图形管理器,我可以通过在我的网络浏览器中从任何地方输入domain.com:50000或domain.com:60000来访问。我在我的所有软件上使用相同的URL。 domain.com:50000用于我的git客户端,domain.com:55000用于我的数据库客户端,依此类推。
这种方式工作得很好,但有两个问题让我烦恼:
第一个是我必须告诉每个易受我的应用程序影响的人的端口号。但就像我说我没有使用通常的端口号来获得更高的安全性所以我不想与所有人分享这些数字。
第二个问题更重要: 当我在某个地方时,例如在工作中,防火墙可能会阻止我正在使用的端口号。所以我的个人git是无法访问的,我的云等也是如此。
要在一次移动中解决这些问题,我想在我的域上添加子域,并将这些子域重定向到我的不同端口。例如:
所以在我看来,通过这个解决方案,我可以在浏览器中键入git.domain.com以通过https启动通信(https端口几乎从不被阻止),然后将其从OVH重定向到路由器的端口50000然后我的路由器将其重定向到我服务器的git端口。
但显然这是好事。
创建子域名时(至少在OVH上?)我们无法指定端口。所以我不能设置git.domain.com重定向到myRouterIp:50000但只是重定向到myRouterIp。因此,使用网络浏览器,输入git.domain.com将重定向到myRouterIp:443,这已经被我的网站使用了。
所以我有点困惑。我是否必须为每个应用程序购买一个具有不同公共IP的路由器,然后将所有不同的子域指向不同的路由器?我几乎肯定这有点荒谬。你怎么认为我能解决它?
答案 0 :(得分:1)
正如您所注意到的,在您的DNS控制台中,您无法指定端口;原因是DNS不关心端口,它的唯一目的是将主机名解析为IP地址。
另一个对您的问题很重要的是,大多数(非http)应用程序客户端即使使用友好主机名,也会在启动与路由器/服务器的连接之前将该名称解析为IP地址,然后使用该IP地址与路由器/服务器通信。这意味着当请求到达路由器/服务器上的端口时,路由器/服务器无法确定最初使用的主机名。
极少数例外是HTTP,浏览器总是在Host
HTTP标头中发送请求的主机名。这意味着您可以在同一端口上的一个IP地址上运行多个不同的网站(例如,共享Web托管的工作方式)。设置它应该非常简单,但可能超出SO的范围,尝试SF或SU。
对于其他(非HTTP服务),唯一的解决方案是在不同的端口(您已经这样做)上运行它们,或者拥有多个公共IP地址(可能很难从您的ISP获得)。此外,在一些随机的非默认端口上运行非http服务(并告知用户的端口号)可能(非常明显)比在各自的默认端口上运行它们更安全。
根据您的使用情况,另一种可能的解决方案是让您的用户使用安全VPN连接到本地网络,之后他们可以访问您的服务(可以在不同的私有IP地址和任何端口上运行)你喜欢)。