2026 維運OpenClawTLSWebSocket

2026 OpenClaw 置於 Nginx 或 Caddy 之後:TLS、WebSocket 與 allowedOrigins 生產檢查清單

HTTPS 與真實主機名後,OpenClaw 常見 403、WebSocket 不穩與 allowedOrigins 誤拒。本文比較 NginxCaddy:邊界終止 TLS、保留 UpgradeConnection、對齊瀏覽器來源;並鏈 閘道 doctor生產加固雲端 FAQ,區分代理層與權杖/通道問題。

OpenClawNginxCaddyTLSWebSocketallowedOrigins
OpenClaw 閘道置於反向代理後的 TLS 與 WebSocket 示意

HTTPS 一上線就浮現的三類故障模式

第一,來源不符會打穿瀏覽器安全檢查。本機 http://127.0.0.1:18789 與正式 https://agents.example.com 不同源;fetch/EventSource 與 allowedOrigins 比對,缺協定、多斜線、漏預備主機名皆可能假 403。各環境分開維護來源清單並做端到端驗收。

第二,WebSocket 升級在代理內被吃掉。OpenClaw 儀表板與部分通道橋接需要 HTTP/1.1 升級路徑。從靜態網站教學抄來的泛用反向代理常漏掉 proxy_set_header Upgrade $http_upgrade;Connection "upgrade"。徵兆包含連線建立、送出一幀後立刻重設,因為中介層錯誤緩衝交握,或在同一埠啟用 HTTP/2 卻沒有對應的明文升級路徑。

第三,TLS 雙重終止或信任鏈錯置會耗掉數日。有些團隊在 Node 內開 HTTPS,同時又在 Nginx 終止 TLS,導致加密套件迴圈或瀏覽器拒收憑證鏈。另一種是 TLS 穿透轉送卻未做 SNI 感知路由,納悶為何 ACME 驗證失敗。請維持單一故事:公網客戶端與代理談 TLS,代理以明文 HTTP 連到迴環,除非你刻意在私有網狀架構內使用 mTLS。

威脅模型:生產環境為何要在 OpenClaw 前放反向代理

生產應在邊界完成憑證續期、TLS 政策、請求本文上限與集中存取日誌,再讓流量進迴環閘道。Nginx 適合既有棧;Caddy 自動 HTTPS 上手快,仍須實測 WebSocket 與標頭轉送。

監聽限迴環;相容權杖與通道密鑰分存;X-Forwarded-For 僅信代理一跳;Webhook 先鑑權。多環境拆分 server 與 allowedOrigins;日誌帶共用請求識別碼。

決策矩陣:OpenClaw 閘道選 Nginx 或 Caddy

邊界最適情境WebSocket 體驗維運備註
Nginx 加 certbot已在其他服務使用 Nginx需明確 Upgrade 標頭;留意同埠 http2自行管理續期掛鉤與設定測試
Caddy 自動 HTTPS小團隊要最少 TLS 儀式多數情境直覺;自訂傳輸仍須驗證留意標頭預設與 Nginx 習慣差異
雲端負載平衡加 Nginx多可用區與健康檢查負載平衡器可能需拉高 WebSocket 閒置逾時文件化雙層逾時的加總邏輯
Node 直接 TLS僅內部網狀與 mTLSNode 原生處理升級但較難掛 WAF須嚴格追蹤 Node 密碼學元件修補

選定邊界後,請依閘道維運指南演練:迴環健康、閘道 HTTP、doctor JSON,再測通道。

精簡片段:迴環上游、WebSocket 標頭、長讀取

請替換主機名與 TLS 聯絡信箱。部署後以公網名稱執行 curl -I https://你的主機名/health 驗證。

# --- Nginx(示意 server 區塊)---
# proxy_pass to http://127.0.0.1:18789;
# proxy_http_version 1.1;
# proxy_set_header Host $host;
# proxy_set_header X-Forwarded-Proto $scheme;
# proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
# proxy_set_header Upgrade $http_upgrade;
# proxy_set_header Connection "upgrade";
# proxy_read_timeout 3600s;
# proxy_send_timeout 3600s;

# --- Caddy(示意)---
# reverse_proxy 127.0.0.1:18789 {
#   header_up X-Forwarded-Proto {scheme}
#   header_up X-Forwarded-For {remote_host}
# }
# # 啟用 WebSocket 穿透;為長連線調整 transport read_timeout

逾時、緩衝與可觀測性基準

承載互動 WebSocket 或助理客戶端長輪詢的路由,請將 proxy_read_timeoutproxy_send_timeout 至少設為 3600 秒。適用 REST API 的較短預設會誤殺健康連線。純 HTTP 相容端點可維持六十到一百二十秒,以便對卡死上游快速失敗。

本文大小上限應反映你願意接受的 Webhook 或媒體承載上限。若加固文將出站媒體擷取上限設為二十 MB,入站也應對齊,避免攻擊者先 POST 數 GB 本文耗盡磁碟,閘道還來不及拒絕。

常見問答、內鏈與託管遠端 Mac 何時能簡化堆疊

doctor 全綠但瀏覽器仍見 403,該從哪裡查?

先看代理存取日誌中回 403 的確切路徑。若 Nginx 已記錄,代表 OpenClaw 沒有產生該回應。若僅應用程式日誌出現 403,下一步再查 allowedOrigins 與驗證標頭。

OpenAI 相容路由需要獨立 server_name 嗎?

非必須,但許多團隊把 /v1 相容流量隔到另一個虛擬主機,以便對儀表板套用不同速率限制與 WAF 規則。

能直接複製雲端 FAQ 的防火牆章節嗎?

可作為基線,再補上代理 80/443 埠、健康檢查來源 IP,以及雲端供應商公布的 IPv6 區段。

摘要:在反向代理終止 TLS、明確轉送 WebSocket 升級、讓 allowedOrigins 對齊真實瀏覽器來源,並依邊界→迴環→通道分層排障。

限制:憑證、代理設定與閘道升級仍由你維運。若團隊希望 Apple 原生工具鏈與穩定入口同機,既要收 CI 產物 SFTP 又要長跑閘道,租用託管遠端 Mac常比自建每一跳網路更划算。

SFTPMAC 提供遠端 Mac 與維運照料連線,工程師專注 OpenClaw;同一台亦可收 CI SFTP 並承載閘道。

若你希望託管遠端 Mac 節點在單一維運故事內同時穩定承接閘道與檔案交付,歡迎了解 SFTPMAC 方案。