反向代理 Docker 容器與 Qnap 反向代理功能比較

你好,

我正在尋找一個輕量級的 API webhook 端點主機(用來接收來自 Notion 的 webhook,觸發各種活動)。我已經建立了一個 Python Docker 容器並安裝了 FastAPI。在本地測試時,一個基本的 Hello World 可以正常運作。

我希望能夠開放這個服務,讓它可以自然地從網際網路上接收 webhook。我了解最常見的方法是設置反向代理(reverse proxy),可以用 Traefik 或 Nginx Proxy Manager。我也有看到 Qnap 在控制台的網路存取區域裡有自己的反向代理功能。

有人可以解釋一下選擇這些方案各自的優點嗎?我對於容器和如何保護 NAS 的流量都還很新手。

補充資訊:我已經為我的 *.myqnapcloud.com 子網域設置了 Let’s Encrypt SSL 憑證。我也有自己的個人網域,並透過 Cloudflare 設定。我希望能使用這個網域(例如 api.mydomain.com),指向我的 FastAPI 容器。唯一可能的問題(如果算的話)是我無法將我的個人子網域(api.mydomain.com)直接指向我路由器的 IP,因為它不是固定的。所以我實際上是指向 Qnap 的 DDNS 服務——也就是 api.mydomain.commy-subdomain.myqnapcloud.com → 路由器 IP → 將 80 和 443 端口轉發到 NAS。

先行感謝!

你完全可以將你的個人網域指向你的動態 IP 和路由器。這就是為什麼你需要使用動態 DNS 服務提供商。MyQNAPCloud 也只是做這件事而已。你的路由器甚至可能可以自行處理這個功能。

關於你問的代理伺服器問題,我就讓其他人來回覆,因為我不是很確定。

您好,如果您擁有個人網域並且使用 Cloudflare 作為您的 DNS 伺服器,您是否嘗試過他們的「CloudFlare Tunnel」功能?

這可以讓您的服務(例如 Notion)觸發或推送訊息到您的自訂子網域,然後該子網域可以向您 Container Station 裡的 FastAPI 發送請求。

這種方式不需要在閘道器上開放任何埠口。外部存取您的自訂子網域時,會像入口一樣直接連接到您指定的服務 IP 或埠口。

雖然 CloudFlare 的免費方案有一些速率限制,但對於一般通知和個人用途來說應該不是問題。

如果您對這種方式有興趣,我可以再準備一些設定給您參考。 :grin: