Nginx Proxy Manager:視覺化反向代理管理工具
- 官方網站:https://nginxproxymanager.com/
- GitHub 儲存庫:NginxProxyManager/nginx-proxy-manager
什麼是 Nginx?
Nginx(發音為 engine-x)是全球最主流的高效能 Web 伺服器與反向代理 (Reverse Proxy) 軟體。
- 核心特色:採用非同步事件驅動架構,記憶體佔用極低且具備處理高併發連線的能力。
- 在 Homelab 中的角色:扮演流量總機。當實體主機只有一個對外 Public IP 時,Nginx 能根據來訪的網域名稱(如
nas.domain.com或jellyfin.domain.com),將流量精準轉發至內網對應的伺服器與埠號,同時統一處理 HTTPS (SSL/TLS) 加密。
為什麼需要 Nginx Proxy Manager?
原生 Nginx 需要透過終端機手動編寫設定檔 (nginx.conf),並自行使用 Certbot 申請與維護 SSL 憑證。
Nginx Proxy Manager (簡稱 NPM) 將 Nginx 與 Let's Encrypt 封裝為開箱即用的 Web 應用,讓使用者在瀏覽器介面中點選即可完成網域名稱轉發與自動 SSL 簽發。

主要特點
- 視覺化管理:透過 Web 介面新增、修改或刪除反向代理規則。
- 自動 SSL 憑證:整合 Let's Encrypt,支援 HTTP-01 與 DNS-01 挑戰(如 Cloudflare API),自動申請與定期續簽憑證。
- 存取控制 (Access Lists):支援設定 IP 白名單與 HTTP 基本密碼認證。
- 進階設定:支援 WebSockets、自訂 Nginx 參數配置與 TCP/UDP 串流轉發 (Streams)。

部署步驟 (Docker Compose)
在 Ubuntu Server 終端機執行以下指令:
1. 建立目錄
sudo mkdir -p /opt/stacks/npm/data /opt/stacks/npm/letsencrypt
cd /opt/stacks/npm
2. 建立 compose.yaml
services:
npm:
image: 'jc21/nginx-proxy-manager:latest'
container_name: npm
restart: unless-stopped
ports:
# 外部 HTTP / HTTPS 轉發埠號
- '80:80'
- '443:443'
# Web 管理介面埠號
- '81:81'
volumes:
- ./data:/data
- ./letsencrypt:/etc/letsencrypt
3. 啟動服務
sudo docker compose up -d
初始設定與使用
1. 登入管理介面
在瀏覽器打開:http://<VM_IP>:81
官方預設管理員帳號密碼:
- Email:
admin@example.com - Password:
changeme
首次登入後需依照提示修改管理員信箱與密碼。
2. 新增 Proxy Host 轉發規則
以將 ha.yourdomain.com 轉發至 Home Assistant (192.168.1.10:8123) 為例:
- 點選 Hosts -> Proxy Hosts -> Add Proxy Host。
- Details 設定:
- Domain Names:
ha.yourdomain.com - Scheme:
http - Forward Hostname / IP:
192.168.1.10 - Forward Port:
8123 - 勾選 Block Common Exploits 與 Websockets Support。
- Domain Names:

- SSL 設定:
- SSL Certificate:選取 Request a new SSL Certificate。
- 勾選 Force SSL(強制 HTTPS)與 HTTP/2 Support。
- 勾選 I Agree to the Let's Encrypt Terms of Service。
- 點擊 Save 完成設定。