关注

Hermes Dashboard Web 端部署完整说明

背景

Hermes Dashboard 默认绑定 127.0.0.1:9119,仅限本机访问。通过反向代理(nginx)使用公网域名访问时,会遇到 Host 头校验、CORS 跨域、WebSocket 连接拒绝三个核心问题。本文档记录了完整的源码修改方案和部署步骤。


一、源码修改清单

所有修改均在文件:/usr/local/lib/hermes-agent/hermes_cli/web_server.py

修改 1:添加 import re(第 18 行)

# 在现有 import os 下方添加
import re

修改 2:CORS 跨域配置动态化(第 90-105 行)

原代码:只允许 localhost127.0.0.1 的跨域请求。

修改后:从 HERMES_DASHBOARD_EXTRA_HOSTS 环境变量动态读取允许的域名。

# Build CORS origin regex from HERMES_DASHBOARD_EXTRA_HOSTS (comma-separated
# domain names) so the dashboard works behind a reverse proxy without
# hardcoding domains. Always allow localhost / 127.0.0.1 for local access.
_cors_extra = os.environ.get("HERMES_DASHBOARD_EXTRA_HOSTS", "")
_cors_patterns = [r"^https?://(localhost|127\.0\.0\.1)(:\d+)?"]
for _h in _cors_extra.split(","):
    _h = _h.strip()
    if _h:
        _cors_patterns.append(
            r"^https?://([a-z0-9-]+\.)*" + re.escape(_h) + r"(:\d+)?"
        )
_cors_regex = "|".join(f"({
     
     p})" for p in _cors_patterns) if _cors_patterns else r"^https?://(localhost|127\.0\.0\.1)(:\d+)?$"

app.add_middleware(
    CORSMiddleware,
    allow_origin_regex=_cors_regex,
    allow_methods=["*"],
    allow_headers=["*"],
)

修改 3:Host 头校验支持环境变量(第 182-188 行)

_is_accepted_host 函数中添加环境变量检查:

    # Check HERMES_DASHBOARD_EXTRA_HOSTS env var for reverse-proxy setups.
    # Comma-separated list of additional hostnames to accept (e.g. behind
    # nginx/Caddy with a public domain pointing at the dashboard).
    _extra = os.environ.get("HERMES_DASHBOARD_EXTRA_HOSTS",<

转载自CSDN-专业IT技术社区

原文链接:https://blog.csdn.net/hzether/article/details/160727854

评论

赞0

评论列表

微信小程序
QQ小程序

关于作者

点赞数:0
关注数:0
粉丝:0
文章:0
关注标签:0
加入于:--