Site icon Alvin Chen Club

Reverse Proxy on Nginx docker 使用QNAP Container Station

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

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

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

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

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

等同執行docker run 時的-v

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

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

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

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

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

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