希望应用程序(服务器:端口)具有友好的别名-了解主机别名/DNS/A记录/CNAME

希望应用程序(服务器:端口)具有友好的别名-了解主机别名/DNS/A记录/CNAME,dns,teamcity,alias,hostname,octopus,Dns,Teamcity,Alias,Hostname,Octopus,我正试着让我的头脑围绕着窗口、网络和域 我目前有一个服务器-svr。这是在我的域名companyname.co.uk上 我可以连接到服务器并ping svr和svr.companyname.co.uk 在这个服务器上,我有许多可以访问web的应用程序;TeamCity、Octopus等。我们目前通过浏览svr:xxxx连接到它们,其中xxxx是web应用程序主机的端口(用于TC) 我想创建一个友好的别名,例如teamcity.companyname.co.uk指向svr:9090,octopus

我正试着让我的头脑围绕着窗口、网络和域

我目前有一个服务器-svr。这是在我的域名companyname.co.uk上

我可以连接到服务器并ping svr和svr.companyname.co.uk

在这个服务器上,我有许多可以访问web的应用程序;TeamCity、Octopus等。我们目前通过浏览svr:xxxx连接到它们,其中xxxx是web应用程序主机的端口(用于TC)

我想创建一个友好的别名,例如teamcity.companyname.co.uk指向svr:9090,octopus.companyname.co.uk指向svr:8090


然而,由于没有这方面的经验,我似乎找不到相关的文件或网站,充分解释我在寻找什么

首先,要明确一点:当你访问
http://example.com
,您的web浏览器实际上正在向
example.com:80
发出请求。这是透明的,因为端口80是HTTP协议的标准端口。如您所知,您可以通过将非标准端口附加到URL中的域名来请求该端口:
http://example.com:888/

不幸的是,您不能拥有包含非标准端口的域名“别名”-如果您不指定端口,浏览器将始终尝试使用端口80

一种解决方案是使用代理-、和其他都可以做到这一点

其想法是,您可以设置一个代理服务器,该服务器正在侦听主机上的端口80。它等待连接,然后根据某些规则将这些连接转发到不同的服务器(在同一台主机上,或在不同的主机上)。例如,您可能有如下规则:

IF host = teamcity.companyname.co.uk THEN forward to teamcity:9090
IF host = octopus.companyname.co.uk THEN forward to octopus:8090
这些规则的语法在不同的代理配置之间差异很大,因此这只是一个示例

请注意,这是而不是重定向-对于所有请求,用户的浏览器都连接到
teamcity.companyname.co.uk
。代理将请求发送到不同的服务,并将任何响应转发回“幕后”客户机


这些代理配置可能会变得相当复杂。例如,如果您的teamcity应用程序提供的页面上有指向
http://teamcity:9090/path/to/page
?如果用户单击该链接,其浏览器将失败。幸运的是,可以将代理配置为动态重写URL。您需要做一些研究,根据您的情况定制此解决方案。

这非常有意义。因此,如果我想要,例如,octopus.companyname.co.uk和teamcity.companyname.co.uk,我将无法将它们放在同一台服务器上,因为我需要将它们都放在端口80上。一旦它们在端口80上,我就可以创建一个从svrX到Octopus/TeamCity的CNAME。实际上,如果我做了octopus.companyname.co.uk,它会转到svrY:80.companyname.co.uk和teamcity.companyname.co.uk,它会转到svrX:80.companyname.co.uk。你可以在同一台服务器上放置多个应用程序,只要它们在不同的端口上侦听。代理不关心应用程序在哪里,只要它们正在侦听连接。