進階應用、服務部署- 談談何謂反向代理

技術應用前期往往會需要在伺服器上建立服務 (Application, Service) 。
服務就是要讓別人方便使用,我們就得將服務建立在常見的服務線上(埠口 Port) 。
一台主機最常見的就是 HTTP/HTTPS (80/443) ,但埠口就一對。難道一台主機就只能有一個服務嗎? 這樣未免也太浪費整台運算資源了。

初期我們可以將服務建立在不同的埠口上,進而達到同時讓一台主機具備多個服務。
常見的服務埠口不外乎就是: 3000、5000、8000、8080
但如果你不是工程師,肯定對於網址列需要在尾巴加上『:3000』很陌生;如果你是工程師,隨著管理的服務越多,肯定也會遇到一個問題,到底這台主機有哪些服務? 他們分別為在哪個Port上。前者問題還小,比較危險的是防火牆對於已棄用埠口的開放,可能導致潛在的資訊安全風險。

究竟我們該怎麼解決這個問題? 能不能有一個服務機制- 它就像普通域名一樣,我再加上一些人看得懂的文字,讓主機告訴它其實是對應到哪個服務、哪個埠口? 這個重要角色就是反向代理 Reverse Proxy。

究竟具體該如何達成?
舉例來說: 這是一個標準註冊域名- eidolon168.com,
通常做法就是加port,例如: eidolon168.com:3000 來切割服務,
我不可能再用[.]來區隔,因為這樣是有可能跟域名衝突的,例如: eidolon168.com.tw (這可能在購買域名時,又是一個價格)。

既然後綴不行,那麼我能不能從前綴來,例如: adminer.eidolon168.com,基本上這樣就沒問題。
其中『adminer』前綴就是所謂的子域名(subdomain)

要達成上述功能 ,我們需要在DNS Server留下一筆A紀錄。
當有人詢問adminer.eidolon168.com時,必須要指向跟eidolon168.com同一台主機。

有人做了主機指向外,聰明的你可能會留意到那誰告訴用戶adminer對應到哪個埠口。
這時反向代理的角色就出來,它會解析前綴詞,將數據存取轉移至對應的服務埠口,這也說明為什麼代理伺服器如此重要 因為它是可以轉移你的存取位置的。

基本概念整理如上,下次我們就從實務的部署經驗探討該如何進行設定。

發佈留言