前言¶
DeepSeek Harness (DSH) 採用插件化架構。當 DSH Web 部署在 VPS 上,通過公網域名(例如 https://your.domain)配合反向代理訪問時,部分第三方插件會失效。現象包括:設置頁的 iframe 指向 127.0.0.1 被瀏覽器拒絕、管理操作報錯、診斷接口返回 403。根本原因在於插件假定瀏覽器從迴環地址訪問,並檢查 Host/Origin 是否爲迴環地址。本插件在不修改任何第三方插件文件的前提下,統一處理了這類迴環地址問題。
這是什麼¶
dsh-public-origin 是一個 DSH 插件,由用戶 JJDonald 維護,採用 MIT 許可證。它的核心價值是讓第三方插件在“公網域名 + 反向代理”部署下正常工作,同時通過 DSH 自身的認證機制確保安全。
核心功能¶
- 統一處理反向代理後的迴環地址問題:修正瀏覽器訪問時的 iframe 拒絕問題。
- 修改 billion-context (bili) 路由:將
/bili/origin返回當前頁面的 origin,並在/__bili/*下進行同源反代;修改 bili 管理 API 去除 Origin、Referer 等頭,以迴環身份訪問。 - 修改特定插件 Host:將
reasoning-effort和skill-explorer的請求 Host 改寫爲迴環地址。 - 區分請求來源:根據 socket 地址(127/8 或 ::1)和
X-Forwarded-*頭,區分本機直連和反向代理請求。 - 集成 DSH 認證:通過 DSH 自身的
connection.requestRejection對反向代理請求進行認證(依賴--trusted-host、跨站請求標記和 Origin 同源校驗)。 - 空閒超時:bili 代理請求空閒 5 分鐘無活動會中止。
- 安全修復:修復 v0.1.0 認證繞過漏洞,不再依賴 Host 頭判斷,防止通過僞造 Host 頭繞過登錄。
安裝¶
使用官方安裝命令:
dsh plugin --profile web add github:JJDonald/dsh-public-origin
安裝後重啓 DSH Web 實例。
配置¶
在 profile 的 cordis.patch.yml 中可以覆蓋配置,指定需要處理的路由前綴:
- id: public-origin
config:
localize:
- /dsh-better-reasoning-effort
- /api/dsh-skill-explorer
bili 的處理是固定啓用的,不受此列表影響。
前置要求與部署注意¶
- 環境依賴:依賴 DSH 0.2.0-rc.2+ 和 Node.js >= 22。
- DSH 啓動參數:DSH 需要使用
--trusted-host <域名>啓動,並且僅監聽迴環地址(如--host 127.0.0.1)。 - 反向代理配置:
- 必須設置
X-Forwarded-For或X-Real-IP和X-Forwarded-Proto。插件靠這些頭識別經過反代的請求。 - 建議將 Host 固定爲公網域名(
$server_name),不要原樣轉發客戶端的 Host。示例配置如下:
- 必須設置
location / {
proxy_pass http://127.0.0.1:3080;
proxy_http_version 1.1;
proxy_set_header Host $server_name;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto https;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $connection_upgrade;
proxy_buffering off;
}
- 安全邊界:
- 本機直連:socket 對端地址屬於 127/8 或
::1,且不帶任何X-Forwarded-*頭的請求,原樣交給原插件。 - 反向代理請求:先經過 DSH 認證,未登錄返回 401,不可信返回 403,通過後才改寫爲迴環身份。
- 本機直連:socket 對端地址屬於 127/8 或
兼容性¶
- 當前版本:0.2.1。
- 依賴:DSH 0.2.0-rc.2+,Node.js >= 22。
- 非官方插件:請自行檢查源碼與許可證後再安裝使用。
總結¶
dsh-public-origin 解決了 DSH 生態中第三方插件在公網反向代理部署下的兼容性問題。它通過攔截、改寫 Host 和 Origin、以及集成 DSH 門禁,在不修改上游插件代碼的前提下實現了安全、穩定的迴環地址兼容。