井正天

明道云 HAP 主访问地址与扩展访问地址部署思路参考

井正天Lv.2入道明道云员工 发布于 私有部署 访问地址nginx
0 回复33 浏览

明道云 HAP 主访问地址与扩展访问地址部署思路参考

适用:HAP 私有部署,前面有公网映射和 Nginx。以下为 HTTP 示例,IP 仅用于说明,实际以客户环境为准。

一、先弄清楚两种地址

建议: 如果内外网都要访问,通常可将公网域名设为主地址,内网地址设为扩展地址;生产公网访问优先使用 HTTPS。若只需要一个地址,配置主访问地址即可。

项目 主访问地址 扩展访问地址
含义 HAP 默认主要访问入口 同一套 HAP 新增的访问入口,如内网地址
地址数量 只能配置 1 个 可以配置多个
第三方集成 钉钉、企业微信等集成使用主访问地址 不作为此类集成的主访问地址
示例 http://203.0.113.10 http://192.168.1.10:8080
Nginx 转发到 HAP 8880 18880
HAP 环境变量 ENV_ADDRESS_MAIN ENV_ADDRESS_ALLOWLIST
特殊要求 使用官方 HTTP 代理配置 另外添加 pdaddr 请求头

二、网络图(先看流量怎么走)

假设 Nginx 在 192.168.1.10,HAP 在 192.168.1.20。

1. 主访问地址:外部用户访问 HAP

 外部用户打开 http://203.0.113.10
|
v
公网映射(NAT):203.0.113.10:80 -> 192.168.1.10:80
|
v
Nginx 代理服务器 192.168.1.10(监听 80)
|
| 转发到 http://192.168.1.20:8880
v
HAP 服务器 192.168.1.20(主入口 8880)

2. 扩展访问地址:内网用户访问同一套 HAP

 内网用户打开 http://192.168.1.10:8080
|
v
Nginx 代理服务器 192.168.1.10(监听 8080)
|
| 转发到 http://192.168.1.20:18880
| 携带 pdaddr: http://192.168.1.10:8080
v
HAP 服务器 192.168.1.20(扩展入口 18880)

看图须知:

  • 公网映射:把公网 IP:端口 转发到 Nginx 的 内网IP:端口;不是直接转发到 HAP。
  • Nginx:接收用户请求,再转发到 HAP;Nginx 监听 80 不要求把 HAP 的 8880 改为 80。
  • 同机/分机都支持:如 Nginx 与 HAP 在同一台宿主机,上图中的 192.168.1.20:8880/18880 可换成 127.0.0.1:8880/18880(前提是容器端口已映射到本机)。如果在不同服务器,就使用 HAP 的实际内网 IP。
  • 上图公网 80 -> 内网 80 只是示例;实际也可能 公网 8080 -> 内网 80,以客户 NAT 规则为准。若公网使用 HTTPS,应按实际 TLS 终止位置配置 HTTPS 代理。

三、HAP 配置(按实际访问地址填写)

在 HAP 的 docker-compose.yaml 中配置对应服务:

主地址:

 ENV_ADDRESS_MAIN: "http://203.0.113.10"

扩展地址: 在 app 服务中保留原配置,增加:

 ports:
- "18880:18880" # 新增,原有端口映射不要删除
environment:
ENV_ADDRESS_ALLOWLIST: "http://192.168.1.10:8080"

以上是需要添加/修改的字段片段,不是完整的 Compose 文件;要合并到原有的 ports、environment 下,不要重复新建同名字段。多个扩展地址用英文逗号分隔。修改后按实际安装方式重启 HAP。早期版本没有 ENV_ADDRESS_MAIN 时,参考官方 HTTP 文档中的旧版变量说明。

官方依据:HTTP 代理——主访问地址与环境变量 · 多个访问地址——18880、ENV_ADDRESS_ALLOWLIST 及重启

四、Nginx 配置要点

主地址(转发到 8880):

 server {
listen 80;
location / {
proxy_set_header Host $http_host;
proxy_pass http://192.168.1.20:8880;
}
}

扩展地址(转发到 18880):

 server {
listen 8080;
location / {
proxy_set_header Host $http_host;
proxy_set_header pdaddr http://192.168.1.10:8080;
proxy_pass http://192.168.1.20:18880;
}
}

重要:上述是帮助理解的最简片段,不是可直接上线的完整配置。 正式配置时必须以官方模板为基础,保留 IM /mds2(WebSocket)和 /agent、/api/workflow/api/sse/chat(流式响应)等规则;扩展地址的相关 location 都需添加 pdaddr。经过 WAF/负载均衡终止 HTTPS 时,还需正确传递真实访问协议。

官方完整模板:HTTP 代理配置 · 扩展地址配置及 pdaddr 示例 · 代理部署说明

五、上线前简单检查

  1. 确认网络:公网映射到哪台 Nginx、哪个端口?Nginx 和 HAP 是否同机?
  2. 确认配置:主地址是否对应 ENV_ADDRESS_MAIN;扩展地址是否配置 18880、ENV_ADDRESS_ALLOWLIST 和 pdaddr?
  3. 确认连通:在 Nginx 服务器执行(分机示例):
     curl -I --connect-timeout 5 http://192.168.1.20:8880
    curl -I --connect-timeout 5 http://192.168.1.20:18880
    nginx -t && nginx -s reload
  4. 实际访问验证:分别使用主地址、扩展地址登录,检查页面、消息、文件上传下载和流式响应。curl -I 只用于初步检查连接,返回 302/401/405 不一定表示网络不通。

记住一句话:主地址走 8880;新增扩展地址走 18880 + pdaddr + ENV_ADDRESS_ALLOWLIST。不能只把新地址简单代理到 8880。

六、官方参考(完整配置以官方为准)