2017-08-24 33 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