dsh-public-origin:解決 DSH 插件在反向代理下的迴環地址問題

前言

DeepSeek Harness (DSH) 採用插件化架構。當 DSH Web 部署在 VPS 上,通過公網域名(例如 https://your.domain)配合反向代理訪問時,部分第三方插件會失效。現象包括:設置頁的 iframe 指向 127.0.0.1 被瀏覽器拒絕、管理操作報錯、診斷接口返回 403。根本原因在於插件假定瀏覽器從迴環地址訪問,並檢查 Host/Origin 是否爲迴環地址。本插件在不修改任何第三方插件文件的前提下,統一處理了這類迴環地址問題。

這是什麼

dsh-public-origin 是一個 DSH 插件,由用戶 JJDonald 維護,採用 MIT 許可證。它的核心價值是讓第三方插件在“公網域名 + 反向代理”部署下正常工作,同時通過 DSH 自身的認證機制確保安全。

核心功能

  1. 統一處理反向代理後的迴環地址問題:修正瀏覽器訪問時的 iframe 拒絕問題。
  2. 修改 billion-context (bili) 路由:將 /bili/origin 返回當前頁面的 origin,並在 /__bili/* 下進行同源反代;修改 bili 管理 API 去除 Origin、Referer 等頭,以迴環身份訪問。
  3. 修改特定插件 Host:將 reasoning-effort 和 skill-explorer 的請求 Host 改寫爲迴環地址。
  4. 區分請求來源:根據 socket 地址(127/8 或 ::1)和 X-Forwarded-* 頭,區分本機直連和反向代理請求。
  5. 集成 DSH 認證:通過 DSH 自身的 connection.requestRejection 對反向代理請求進行認證(依賴 --trusted-host、跨站請求標記和 Origin 同源校驗)。
  6. 空閒超時:bili 代理請求空閒 5 分鐘無活動會中止。
  7. 安全修復:修復 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 的處理是固定啓用的,不受此列表影響。

前置要求與部署注意

  1. 環境依賴:依賴 DSH 0.2.0-rc.2+ 和 Node.js >= 22。
  2. DSH 啓動參數:DSH 需要使用 --trusted-host <域名> 啓動,並且僅監聽迴環地址(如 --host 127.0.0.1)。
  3. 反向代理配置:
    • 必須設置 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;
}
  1. 安全邊界:
    • 本機直連:socket 對端地址屬於 127/8 或 ::1,且不帶任何 X-Forwarded-* 頭的請求,原樣交給原插件。
    • 反向代理請求:先經過 DSH 認證,未登錄返回 401,不可信返回 403,通過後才改寫爲迴環身份。

兼容性

  • 當前版本:0.2.1。
  • 依賴:DSH 0.2.0-rc.2+,Node.js >= 22。
  • 非官方插件:請自行檢查源碼與許可證後再安裝使用。

總結

dsh-public-origin 解決了 DSH 生態中第三方插件在公網反向代理部署下的兼容性問題。它通過攔截、改寫 Host 和 Origin、以及集成 DSH 門禁,在不修改上游插件代碼的前提下實現了安全、穩定的迴環地址兼容。

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜