Reverse Proxy on docker 使用QNAP Container Station

之前一直有個想法,因為自己會用多台機器或者多台docker架設不同服務,但是80 port跟固定IP只有一個

如果在不同的機器下以前都是用不同的port來區隔,讓分享器把不同的port轉到不同的機器上來達成需求

但是一直覺得這樣做不是一個好的做法

後來找到了reverse proxy可以辦到我想要透過不同的url來區隔在不同docker上的網站

比如說nax.xxx 連回到nas管理頁面,plex.xxx連線到plex伺服器,www.xxx連到個人網站 等等

雖然這些都站都存在同一個IP且在同一台機器上,只是服務的docker不同

因此這次就要用QNAP上的container station 啟動一台Nginx來負責轉接這些服務

參考資料:

https://blog.techbridge.cc/2018/03/17/docker-build-nginx-tutorial/

https://github.com/vfarcic/continuous-deployment/issues/2

1. 概念 :

概念上,我需要不同的URL轉接到不同的port,但是對外都是走80 port,這樣url比較好記

而且不希望用一台ubuntu架設Ngin來做這件事情感覺吃太多資源了,因此只透過QNAP的caontainer station

mapping一個nginx.conf設定檔到docker來達成目標

2. 準備好要給Nginx的config檔

這邊並不要是要寫Nginx中sites-available中的檔案,而是必須要寫nginx.conf,參考資料如下

重點是中間server那塊,我將8879 port上的xxx.alvinchen.club轉到內網中192.168.1.100機器上,port是10084

另一條是8879 port上的123.alvinchen.club轉到內網中192.168.1.100機器上,port是12300

這樣就達成我要的透過不同網址來轉發不同的服務

最後,檔案存檔成nginx.conf然後儲存在路徑:

之後我們要把這個路徑mapping到docker中

3. 在Container Station中建立一台Nginx

QNAP Container Station

首先搜尋nginx,我是裝docker hub上的最新版本

QNAP Container Station

名稱上可以自己隨意輸入,為了好記我就打上nginx-for-reverse_proxy,也為了不要佔太多資源CPU以及RAM都降低

QNAP Container Station

接下來,很重要的一點是網路的部分一定要使用Bridge,然後給一個固定IP,最後才能設定分享器將8879 port轉到.253上

QNAP Container Station

接下來是最重要的部分,我們必須將剛剛的nginx.conf所在資料夾 mapping到docker中的/etc/nginx資料夾

等同執行docker run 時的-v

QNAP Container Station

幾秒鐘後就可以看到總覽中有一個docker跑起來了

這時候就可以去看一下xxx.alvinchen.club:8879 以及123.alvinchen.club:8879是不是已經轉到想要的位置上了

到這個步驟為止,應該已經沒有問題

最後補充一下如果要修改nginx.conf怎麼辦呢?

可以安裝Text Editor,就可以直接在FileStation中直接對檔案做編輯,像這樣子

QNAP Text Editor

以上希望對於Container Station或者Docker不熟悉的使用者有一些幫助