[教學] 透過 DuckDNS 與 NGINX Reverse Proxy 做 TLS/SSL 加密連線

E大:
若兩個homeassistant設置在不同兩地,
duckdns也要用另外一組不同的mail去申請新的網址嗎??

不用,一組郵件記得可以申請五個域名…

感謝E大,我再試試

請問e大,我沿用之前大duckdns,nginx照你的教學操作,顯示如圖片
之前duckdns配caddy是沒問題的,這次我改用ros軟路由,固定ip可以直接連上內網,但duckdns就無法,請求支援

Caddy有關掉了嗎?Nginx不需要轉port

你外部的 port 433 有轉到 HA 那台 IP 的 port 433 嗎?

有啊,e大是說 443嗎?

有,關掉也刪掉啦,但還是一樣:joy:

E大想請問一下,最近有網友在討論一些比較特殊的狀況,例如用的是社區專線,社區有開Port出來(非80/ 443),這種情況下該如何設定? 我用Cable modem的條件來模擬這個狀況,只要不是設定80/ 443基本上就不會通,轉port的部分是否該注意什麼?
第一種條件全部選用預設服務的port沒問題

第二種條件就無法透過NGINX manager的ssl了

不知道是不是有那裡設定錯誤

我記得之前測試,外部 port 80 會用來做 Let’s Encrypt HTTP-01 challenge(NGINX Proxy Manager 使用的免費憑證驗證機制),DuckDNS add-on 裡也是用 Let’s Encrypt 的憑證服務,但因為 DuckDNS 就是域名提供者所以可以用 DNS-01 challenge,不必用到 port 80。

不過我有試過把手動取得的憑證透過匯入的方式加入到 NGINX Proxy Manager 是可以的(Synology NAS 提供的 DDNS 域名跟憑證,我從 DSM 中匯出),目前只能想到透過這種方式。但一般申請 TLS/SSL 憑證要過認證要嘛就是走 HTTP 確認有 server 控制權,不然就是要有同網域 admin email 或 DNS server 修改權限,一般使用者沒有相關架站知識跟環境會有蠻高的難度。

NGINX Proxy Manager 很多功能我都找不到資料去研究,所以後來就沒花太多時間深掘了。對這一塊我也只有很粗淺的知識,有人知道的話也請分享一下。

Let’s Encrypt 網站上的說明

我用 Synology Router、EdgeRouter 以及 Dream Machine Pro 上做 port 80 / 443 forwarding 都正常(外部 port 80 → HA port 80,外部 443 → HA port 443),我沒有 RouterOS 環境,不然就要等我收到我的 MikroTik router 後再來玩看看了。(藍圈預購不知要等多久)

你手動匯入後有試過不開80/ 443,改開別的port給HA的80/ 443嗎? 因為我手動匯入HA底下的SSL憑證還是不行,不過我忘了試匯入後用預設服務的port看能不能通就是了

沒有試過非正規 port,因為原本的目的就是不希望輸入 port,但我記得手動輸入憑證是 OK 的。

終於可以https上ha,也不確定是怎麼成功的,請問e大,在同個ip下的其他port也可以做到https嗎?如果可以請教如何? 我有在路由器上設定,但除了ha外,其他的都是能http

你需要使用 NGINX Proxy Manager,然後每個服務都要申請自己的域名才能對應。

例如:
https://service1.duckdns.org → HA port 443
https://service2.duckdns.org → router port 8080
https://service3.duckdns.org → nas port 5001

謝謝ed大,已經解決問題

2個讚
http:
  use_x_forwarded_for: true
  trusted_proxies:
    **- 172.30.33.0/24 #輸入 proxy server 的 IP,也可以輸入 subnet mask** <<這IP要輸入甚麼?

請問若不知道port 80 已被使用,設定內外port 80時顯示因為80已經使用,路由器端口將變成8080,那我該如何改回來?

如果用的是官方磁碟映像檔的環境,可以試試看我範例的參數。

如果錯誤,系統 log 裡會提示有 proxy 的連線被禁止,看 IP 或網段多少修正即可。

路由器的被改掉,應該要從路由器的介面改回來。每家的都不同,請參閱公開說明書(誤