威联通NAS通过宝塔面板实现域名统一端口访问
背景
家用的寬帶是聯通的,自帶公網 IP ,但是封鎖了 80 端口和 443 端口,無法隱藏端口進行訪問。因為前段時間一直在給 NAS 增加服務,都是通過公網 IP + 端口的形式通過路由器的端口映射訪問服務,隨著服務逐漸增多,端口名越來越亂,腦子快記不過來了
需求
能否通過不同域名的相同端口實現對不同服務的訪問呢?比如我令 blog.xxx.xyz 和 git.xxx.xyz 兩個域名都解析到我的公網 IP 上,但是 blog.xxx.xyz:8080 訪問的是我自己的博客,而 git.xxx.xyz:8080 訪問的是我的代碼倉庫
摸索
我的域名是阿里云上買的,首先搜到的方法是可以通過域名解析的 隱形URL 對域名轉發到指定端口,很可惜這種方法需要對網站進行備案,而我的域名并不是用來建網站的,所以無法使用此方法
下一個思路是反向代理,關于正向代理與反向代理的相關介紹可以看這里:
反向代理為何叫反向代理? - 劉志軍的回答 - 知乎
我個人的理解,反向代理本質上也是一種 NAT,類似于路由器上的端口映射,只不過反向代理可以將域名的指定端口映射到內網中的指定端口上,而威聯通的 QTS 5.0 版本剛好更新了反向代理的功能,但我的 NAS 畢竟是放在內網里的,如果想要實現反向代理,需要將其設置為 DMZ 主機,剛好 TP-LINK 的路由器具有這個功能,所以到此為止一切順利
但是有個很麻煩的問題就來了,映射之后服務的 web 端確實可以打開,但是也僅限于打開。比如博客這個服務,通過反向代理只能打開主頁,卻不能訪問博文或跳轉到其他子頁面。究其原因,似乎是如果跳轉到其他頁面,反向代理會使用內網的路徑訪問,所以在外網無法正常訪問。因為網上幾乎搜不到任何相關案例,遂只能放棄。
但是反向代理這條路還沒有走到頭,于是我去簡單學習了 nginx 反向代理,在 docker 中安裝后,開始使用,起初也遇到了和上一段一模一樣的問題,但是這次網上搜到了相關案例,并且解決了。但是接下來又出現了一個很致命的問題:外網無法訪問內核!簡單來說,博客可以正常跳轉了,但是其他服務如jupyter notebook,無法正常使用內核。嘗試解決半天無果,也只能放棄。
最后抱著試試看的心理安裝了寶塔服務,相對于 nginx 來說圖形化界面更方便操作一些,雖然用其反向代理的功能仍然無法滿足需求,但是發現寶塔面板下有一個重定向的功能,完美滿足了我的個人需求
正文
還是先用 Container Station 安裝寶塔面板,我用的是 pch18/baota
創建 docker 時我用的是橋接模式,分配的 IP 地址為 192.168.2.6。如果使用 NAT模式,記得將所需端口映射一下。
創建完畢后,終端顯示如下所示
然后登陸 web 端進行配置就可以了,web 端的端口為 8888,所以我的內網地址就是 192.168.2.6:8888
如果初始用戶名和密碼登不上去,終端里輸入指令 bt 重置一下就好了
在軟件商店安裝一個 Apache 用來搭網站
如果安裝的過程中提示需要先卸載 Nginx 的話,直接商店搜索然后卸載就好了
安裝完成后,點擊左側導航欄的網站 - 添加站點
建好網站后,點最后面的設置 - 重定向(測試版)- 添加重定向
將域名轉發到所需要的的端口就可以了,其他選項都默認
最后記得在路由器中將這個 docker 作為 DMZ 主機
然后再去訪問相應的域名,就可以正常轉發了
寫在后面
這種方法的優缺點也簡單總結一下
首先關于 DMZ 主機,雖然開放 DMZ 主機可以自由的通過外網訪問內網設備,但也意味著設備完全暴露在互聯網中了,可能會被不法分子盯上并惡意攻擊,注意保護,可以關閉自己不需要的端口,只保留需要使用端口
關于寶塔面板的重定向功能,因為是重定向,簡單理解就是你輸入的域名變成了一個目錄,實際訪問的地址還是最初的 公網 IP + 端口的形式,所以在連接的速度和穩定性上并不會受第三方軟件的影響,這點還是比較好的
總結
以上是生活随笔為你收集整理的威联通NAS通过宝塔面板实现域名统一端口访问的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 2021ICPC(沈阳) - Strin
- 下一篇: 如何使用git for windows上