
我們將以 OpenWebUI 為例,並實作企業常見的 LDAP 登入機制,一步步帶你完成從伺服器架設到反向代理部署的完整流程。
這樣的架構不僅能確保主機免於直接暴露在外部網路,更能透過 HTTPS 加密,讓使用者在連線時獲得更高的安全性與信任感。
在現今網路環境中,將本機電腦上的服務進行反向代理是一項非常重要的工作。
其主要目的如下:
- 提升安全性與信任感:
透過將 HTTP 升級為 HTTPS,能為使用者提供更高的安全性與信任程度,保護資料在傳輸過程中的完整性。 - 隱藏內部架構:
將本機的網址及端口隱藏,避免直接暴露在外部網路中,有效降低潛在的資安攻擊風險。 - 集中管理流量:
反向代理能幫助我們集中管理流量,並根據需求進行流量分配、負載平衡,提升服務的穩定性。 - 簡化憑證管理:
通過反向代理工具(如 Nginx),可以輕鬆集成 SSL 憑證,減少繁瑣的配置作業。
一、準備工作
在專案資料夾下建立 docker-compose.yml:
services:
openwebui:
image: ghcr.io/open-webui/open-webui:main
container_name: openwebui
expose:
- "8080"
volumes:
- open-webui-data:/app/backend/data
restart: always
environment:
ENABLE_LDAP_AUTH: "true"
LDAP_SERVER_HOST: "ldap"
LDAP_SERVER_PORT: "389"
networks:
- proxy
- ldapnet
ldap:
image: osixia/openldap:1.5.0
container_name: openldap
volumes:
- ./ldap/var:/var/lib/ldap
- ./ldap/etc:/etc/ldap/slapd.d
ports:
- "389:389"
networks:
- ldapnet
nginx-proxy-manager:
image: 'jc21/nginx-proxy-manager:latest'
container_name: nginx-proxy-manager
restart: unless-stopped
ports:
- '80:80'
- '81:81'
- '443:443'
volumes:
- ./nginx/data:/data
- ./nginx/letsencrypt:/etc/letsencrypt
networks:
- proxy
volumes:
open-webui-data: {}
networks:
ldapnet:
driver: bridge
proxy:
driver: bridge
docker-compose.yml 架構目前說明
| 服務名稱 | 功能 |
|---|---|
| openwebui | 主應用程式(內部 port 8080,對外由 Nginx Proxy Manager 接收請求) |
| ldap | 內部 LDAP 伺服器 (實務中你會改成連公司 AD) |
| nginx-proxy-manager | Nginx Proxy Manager (反向代理 + SSL 終結) |
| networks | proxy 用於反向代理與 webui 溝通;ldapnet 用於 openwebui 與 LDAP 伺服器溝通 |
二、啟動與重啟環境指令
在你的 docker-compose.yml 目錄下執行:
# 首次或修改設定後啟動
docker compose up -d
# 查看服務狀態
docker compose ps
三、接下來的實際步驟流程(含公司 SSL + DNS)
因為你的公司會提供 SSL 憑證 以及 DNS,
所以流程會跟「Let’s Encrypt 自動簽發」的方式略有不同,請特別注意。
Step 1:確認公司 DNS 設定
- 公司 IT 應該會幫你把:
openwebui.公司網域.com→ 指向你這台伺服器的 外部 IP
可以用這個指令確認:
nslookup openwebui.公司網域.com
如果回傳你的伺服器 IP,就代表 DNS OK
Step 2:啟動容器
docker compose up -d
- Nginx Proxy Manager 會跑在:
http://<你的伺服器IP>:81

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

第一次登入會要求你修改帳號、密碼。
Step 3:把 SSL 憑證放進容器
由於你是用「公司提供的 SSL」,而不是自簽或 Let’s Encrypt,所以要手動匯入:
- 公司 IT 會提供你這三個檔案(或類似命名):
cert.pem(公鑰)privkey.pem(私鑰)chain.pem(中繼憑證,若有)
- 登入
http://<ip>:81→ 點選欄位 SSL Certificates →Add SSL Certificate選擇 Custom → 上傳這些檔案(或貼上內容),名稱隨意取名即可。 - 成功上傳後,你會看到它出現在憑證列表中

Step 4:建立 Proxy Host
進入 Nginx Proxy Manager 介面 → Hosts → Proxy Hosts → Add Proxy Host
填寫以下設定:
| 欄位 | 內容 |
|---|---|
| Domain Names | openwebui.公司網域.com |
| Scheme | http |
| Forward Hostname / IP | openwebui |
| Forward Port | 8080 |
| Enable Websockets | ✅ |
| Block Common Exploits | ✅ |

SSL 設定:

- SSL Certificate → 選剛剛匯入的公司 SSL 憑證
- Force SSL → 打勾✅
- HTTP/2 → 打勾✅
按下「Save」。
現在你應該就能用下面的網址:
<https://openwebui.公司網域.com>
來訪問你的服務囉 !
Step 5:測試 LDAP 登入
因為反向代理不會影響 LDAP:
- 使用公司 AD 帳號登入 WebUI
如果仍然被卡在”待授權”,可以用管理員帳號:
- 登入 Open WebUI 選擇左下設定裡面的”管理員控制台” → “設定”→ “一般”→ “驗證”→ “預設使用者角色“,改為”使用者”
這樣有註冊在公司 AD 帳號的同仁就可以直接 AD 帳號登入進行使用
四 、完整操作路線圖
- 修改完 docker-compose.yml
- 啟動所有容器
docker compose up -d - 公司幫你設定好 DNS → 指向伺服器 IP
- 匯入公司提供的 SSL 憑證(NPM 後台)
- 建立 Proxy Host → 指向 openwebui container
- 確認
https://openwebui.公司網域.com是否可連 - 用公司 LDAP/AD 帳號登入 Open WebUI
- 開始正式使用
這樣就完成了整個 Open WebUI + 企業 LDAP + 公司 SSL + 反向代理 的架構 !
也是企業 生產等級 的部署了。
五、遇到「SSL 憑證先拿到,但 DNS 還沒開」操作流程
答案是:
- 可以先做大部分步驟(例如 Nginx + 憑證匯入 + Proxy Host 設定)
但 無法從外部用網域訪問服務,因為 DNS 還沒解析到你的伺服器。
當前的條件
- 有 SSL 憑證(例如
openwebui.company.com) - 還沒有 DNS A 記錄(
openwebui.company.com → 你的伺服器 IP) - 本機或內部網路可存取
可以先做的步驟
Step 1:正常啟動 docker 環境
docker compose up -d
讓 openwebui、nginx-proxy-manager、ldap 都先跑起來。
Step 2:登入 Nginx Proxy Manager 後台
http://<你的伺服器IP>:81預設帳密:admin@example.com / changeme登入後修改密碼。
Step 3:上傳公司給你的 SSL 憑證
SSL Certificates → Add SSL Certificate → Custom- 上傳:
cert.pem(公鑰)privkey.pem(私鑰)chain.pem(中繼證書,若有)
- 儲存後會看到證書出現在列表中
注意:雖然此時還沒有 DNS,但 SSL 憑證已經進 NPM,可以先備妥。
Step 4:建立 Proxy Host(提前綁定網域名稱)
你可以先建立 Proxy Host,例如:
| 欄位 | 值 |
|---|---|
| Domain Names | openwebui.company.com (即便現在還沒解析也沒關係) |
| Scheme | http |
| Forward Hostname / IP | openwebui |
| Forward Port | 8080 |
| Websockets | ✅ |
| SSL Certificate | 選剛剛匯入的公司憑證 |
| Force SSL | ✅ |
| HTTP/2 | ✅ |
雖然現在 openwebui.company.com 還沒連得通,但設定已經存在。
Step 5:先用「hosts 檔」模擬 DNS(內部測試)
如果你想提早測試(不等公司開 DNS),
你可以在你 自己的電腦 上編輯 hosts 檔案,手動把網域指向伺服器 IP 👇
🖥 Windows
編輯:
C:\\Windows\\System32\\drivers\\etc\\hosts
加入一行:
192.168.0.10 openwebui.company.com
🐧 macOS / Linux
編輯:
/etc/hosts
加入一行:
192.168.0.10 openwebui.company.com
然後你就可以用:
<https://openwebui.company.com>
在瀏覽器打開服務 ✅
這樣的方式:
- 不需要等 DNS 正式開通
- SSL 憑證仍然有效(因為瀏覽器連線時域名匹配)
- 適合內部測試 / 預先驗證架構
Step 6:等公司 DNS 開好後
當 IT 把 openwebui.company.com 指向你的伺服器 IP:
- 你不需要重新設定任何東西
- 你可以刪掉 hosts 檔案中的暫時設定
- 網域就會從公司內外正常連上
小提醒
| 項目 | 如果沒 DNS 的情況 |
|---|---|
| Nginx Proxy Manager 安裝 | ✅ 可先完成 |
| SSL 憑證匯入 | ✅ 可先完成 |
| Proxy Host 設定 | ✅ 可先完成 |
| 外部訪問網址 | ❌ 不能用,因為沒解析 |
| 本機或內部測試 | ✅ 可用 hosts 檔達成 |
