一個圖形介面,管理所有自架服務的網域和 HTTPS。

Nginx Proxy Manager 讓你用圖形介面管理反向代理,自動申請 Let's Encrypt SSL 憑證。在 Synology NAS 上安裝設定,把多個自架服務掛上自訂網域和 HTTPS,不需要手寫設定檔。

在 Synology NAS 上架設 Nginx Proxy Manager:反向代理 + 自動 HTTPS 完整教學

當你的 NAS 上跑了多個 Docker 服務,每個都有自己的 Port 號,久了就會很難記:Vaultwarden 是 8888、Immich 是 2283、AdGuard 是 3000⋯⋯

Nginx Proxy Manager(NPM)解決這個問題:你只需要一個對外 Port(80/443),讓 NPM 根據網域名稱把流量分發到對應的服務,同時自動申請和續約 Let's Encrypt SSL 憑證。

一個圖形介面,管理所有服務的反向代理和 HTTPS,不需要手動編輯任何 nginx 設定檔。


🎯 這篇適合誰

你的情況 建議先看哪段
想先了解反向代理是什麼 先看「反向代理在做什麼」
直接看安裝步驟 跳到「安裝步驟」
想把服務掛上自訂網域 跳到「新增代理主機」
想設定 SSL 憑證 跳到「設定 HTTPS」

🔀 反向代理在做什麼

沒有反向代理時,你的服務長這樣:

http://192.168.1.100:8888  → Vaultwarden
http://192.168.1.100:2283  → Immich
http://192.168.1.100:3000  → AdGuard Home

加了 Nginx Proxy Manager 之後:

https://vault.yourdomain.com   → Vaultwarden(有 HTTPS)
https://photos.yourdomain.com  → Immich(有 HTTPS)
https://adguard.yourdomain.com → AdGuard Home(有 HTTPS)

NPM 接收所有進來的連線,根據你設定的網域名稱決定把流量轉發到哪個 Port,並自動處理 SSL 加密。

Nginx Proxy Manager 反向代理架構:網域請求統一進入 NPM,再轉發到對應服務


📋 安裝前準備

  • Synology DSM 7.2 以上,已安裝 Container Manager
  • 對外存取(申請 HTTPS)需要:一個你管理的網域(可以是 Cloudflare 等 DNS 服務),以及路由器開放 Port 80 和 443 對外

如果你不想開放連接埠,可以考慮 Cloudflare Tunnel,不需要 NPM 也能有 HTTPS。NPM 更適合你已有網域、且可以開連接埠的場景。


🛠️ 安裝步驟

1. 建立資料夾

/volume1/docker/nginx-proxy-manager/
├── data/
└── letsencrypt/

2. 建立 docker-compose.yml

version: "3"

services:
  npm:
    image: jc21/nginx-proxy-manager:latest
    container_name: nginx-proxy-manager
    ports:
      - 80:80
      - 443:443
      - 81:81
    volumes:
      - /volume1/docker/nginx-proxy-manager/data:/data
      - /volume1/docker/nginx-proxy-manager/letsencrypt:/etc/letsencrypt
    restart: always

Port 說明: - 80:HTTP 流量入口 - 443:HTTPS 流量入口 - 81:NPM 管理後台

3. 啟動容器

Container Manager → 專案 → 建立,或 SSH:

cd /volume1/docker/nginx-proxy-manager
docker compose up -d

4. 登入管理後台

瀏覽器開啟 http://NAS的IP:81

預設帳號: - Email:admin@example.com - 密碼:changeme

第一次登入後請立刻修改帳號和密碼。


🌐 新增代理主機

假設你要把 vault.yourdomain.com 代理到本機的 Vaultwarden(Port 8888):

  1. 後台 → Proxy HostsAdd Proxy Host
  2. Domain Names:填入 vault.yourdomain.com
  3. Schemehttp(NPM 到後端服務是內部連線,不需要 HTTPS)
  4. Forward Hostname / IP:填 NAS 的 IP(例如 192.168.1.100
  5. Forward Port8888
  6. Save

儲存後,所有打到 vault.yourdomain.com 的流量就會被轉發到 Vaultwarden。


🔒 設定 HTTPS

NPM 可以自動向 Let's Encrypt 申請免費 SSL 憑證:

  1. 編輯剛才建立的代理主機
  2. 切換到 SSL 分頁
  3. SSL Certificate 選擇 Request a new SSL Certificate
  4. 勾選 Force SSL(強制 HTTP 轉到 HTTPS)
  5. 填入你的 Email(Let's Encrypt 通知用)
  6. Save

NPM 會自動向 Let's Encrypt 申請憑證,通常幾秒內完成。憑證快到期時也會自動續約。

申請憑證需要 Let's Encrypt 能從外部驗證你對該網域的所有權(Port 80 必須對外開放),或使用 DNS 驗證。若使用 Cloudflare 管理 DNS,可以用 DNS Challenge 不需要開 Port。


🔧 搭配 Cloudflare DNS

如果你的網域在 Cloudflare,推薦這個設定:

  1. 在 Cloudflare DNS 新增 A 記錄,指向你的家裡 IP
  2. 把 Proxy 狀態設為 DNS only(灰色雲朵),讓 Let's Encrypt 驗證通過
  3. NPM 申請完憑證後,再改回 Proxied(橘色雲朵)

或者直接用 Let's Encrypt 的 DNS Challenge,在 NPM 填入 Cloudflare API Token,就不需要開 Port 80。


📋 實際使用範例

以下是一個完整的多服務設定範例:

網域 轉發到 說明
vault.domain.com 192.168.1.100:8888 Vaultwarden
photos.domain.com 192.168.1.100:2283 Immich
nas.domain.com 192.168.1.100:5000 DSM 管理介面
ha.domain.com 192.168.1.100:8123 Home Assistant

每個服務各自有網址,全部都有 HTTPS,不需要記 Port。


❓ 常見問題

Q1:NPM 和 Synology 的反向代理有什麼差?

DSM 內建的反向代理(控制台 → 登入入口)功能較基本,不支援自動申請 Let's Encrypt、不支援多網域管理介面。NPM 在彈性和功能上更完整,適合管理多個自架服務。

Q2:開了 Port 80/443,安全嗎?

風險存在,但可以管控。建議: - 在 NPM 後台開啟 Access Lists,限制特定 IP 才能存取管理介面 - 使用 Cloudflare Proxy(橘色雲朵),讓流量先過 Cloudflare 的 WAF 保護 - 不要把不必要的服務暴露出去

Q3:NPM 和 Cloudflare Tunnel 哪個比較好?

取決於需求: - Cloudflare Tunnel:不需要開連接埠,設定簡單,適合不想管防火牆的人 - NPM:需要開 Port,但可以完全掌控流量,適合進階需求(自訂 nginx 設定、Access Lists、本地網路直連)

兩者也可以並用:內部網路走 NPM,對外走 Cloudflare Tunnel。

Q4:憑證申請失敗怎麼辦?

最常見原因是 Port 80 沒有對外開放,或 DNS 還沒有指向你的 IP。確認這兩件事後再試。NPM 的 logs 裡會有具體的錯誤訊息可以參考。如果不確定某個 port 是否真的對外開放,可以在 PowerShell 執行 Test-NetConnection -ComputerName 你的WAN IP -Port 80 直接驗證。


✨ 總結

Nginx Proxy Manager 是自架服務玩家的基礎設施之一。一旦設好,你的所有服務都有乾淨的網址和 HTTPS,管理起來也清晰很多。

搭配 Cloudflare 管理 DNS,可以進一步加上 CDN 保護和自動憑證申請,讓整個架構更完整。


🔗 延伸閱讀

這篇有幫助嗎? 一個圖形介面,管理所有自架服務的網域和 HTTPS。