2017-08-24 75 views
0

我想让我的脑袋绕过Windows,网络和域名。想让应用程序(服务器:端口)有友好的别名 - 了解主机别名/ DNS/A记录/ CNAME

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

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

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

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

但是,没有在这方面经验,我似乎无法找到相关的文件或网站,完全解释我在找什么。

回答

1

首先,明确一件事:当您访问http://example.com这样的网页时,您的网络浏览器实际上是向example.com:80发出请求。这是透明地完成的,因为端口80是HTTP协议的标准端口。如您所知,您可以通过在URL中附加域名来请求非标准端口:http://example.com:888/

不幸的是,你不能有一个域名“别名”,它包含一个非标准的端口 - 如果你没有指定端口,你的浏览器将总是尝试使用端口80。

一种解决方案是使用代理 - nginxapache,lighttpd,其他人都可以做到这一点。

这个想法是,你建立一个代理服务器,监听主机上的端口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。你需要做一些研究来针对你的情况量身定制解决方案。

+0

这非常合理。因此,如果我想拥有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 – Olly

+0

你可以把多个应用程序在同一台服务器上,只要它们在不同的端口上侦听。代理不关心应用程序的位置,只要他们正在监听连接。 – Kryten