首先,要明确一点:当您访问类似 的网页时http://example.com
,您的网络浏览器实际上是在向example.com:80
. 这是透明的,因为端口 80 是 HTTP 协议的标准端口。如您所知,您可以通过将其附加到 URL 中的域名来请求非标准端口:http://example.com:888/
.
不幸的是,您不能拥有一个包含非标准端口的域名“别名”——如果您不指定端口,您的浏览器将始终尝试使用端口 80。
一种解决方案是使用代理—— nginx、apache、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。您需要进行一些研究以根据您的情况定制此解决方案。