多访问地 址配置
双地址
默认情况下,如果将系统的第二个访问地址直接代理转发到当前系统原地址上,会有访问异常现象
因 HAP 产品特性,如果需要配置系统第二访问地址,需要将请求转发最终至容器内的 18880 端口,并在配置文件中指定第二访问地址才可以正常通过第二访问地址使用系统
配置步骤
-
修改
docker-compose.yaml
文件在
environment
下新增变量指定第二访问地址ENV_EXT_MINGDAO_PROTO: "https"
ENV_EXT_MINGDAO_HOST: "hap2.domain.com"
ENV_EXT_MINGDAO_PORT: "443"在
ports
下新增端口映射,将容器内的 18880 端口映射出- 18880:18880
docker-compose.yaml 配置文件示例
version: '3'
services:
app:
image: nocoly/hap-community:5.8.0
environment:
ENV_ADDRESS_MAIN: "http://hap1.domain.com:80"
ENV_APP_VERSION: "5.8.0"
ENV_API_TOKEN: "******"
ENV_EXT_MINGDAO_PROTO: "https" # 新增
ENV_EXT_MINGDAO_HOST: "hap2.domain.com" # 新增
ENV_EXT_MINGDAO_PORT: "443" # 新增
ports:
- 8880:8880
- 18880:18880 # 新增
volumes:
- ./volume/data/:/data/
- ../data:/data/hap/data
doc:
image: nocoly/hap-doc:1.2.0- 请注意,
docker-compose.yaml
中共有四处新增内容
- 请注意,
-
在安装管理器目录下重启 HAP 服务生效
bash ./service.sh restartall
-
将第二访问地址请求转发到服务器的 18880 端口即可
多地址
如果系统要配置三个、四个等更多访问地址时,上述的双地址方式则不适用了,可参考以下方式通过 nginx 代理形式增加 pdaddr
头信息实现多地址形式访问系统,(微服务版本需要在 v3.5.0 及以上)。
注意:按照此方式配置多地址访问系统时,
dockerc-compose.yaml
配置文件中不能包含ENV_EXT_MINGDAO_PROTO
、ENV_EXT_MINGDAO_HOST
、ENV_EXT_MINGDAO_PORT
变量。
配置步骤
-
在
docker-compose.yaml
中 app 服务ports
下新增端口映射,将容器内的 18880 端口映射出- 18880:18880
-
在 app 服务 environment 下新增变量,变量值为你的扩展访问地址,多个值时以逗号分割
ENV_ADDRESS_ALLOWLIST: "https://hap2.domain.com"
-
在安装管理器目录下重启 HAP 服务生效
bash ./service.sh restartall
-
配置 nginx 文件,将新的访问地址,反向代理至 HAP 微服务的 18880 端口
nginx 反向代理配置文件参考:
-
在 nginx 配置文件各
localtion
下增加proxy_set_header pdaddr
指定访问系统访问地址如:
location / {
set $real_ip '';
if ($http_x_real_ip) {
set $real_ip $http_x_real_ip;
}
if ($http_x_real_ip = '') {
set $real_ip $remote_addr;
}
proxy_set_header X-Real-IP $real_ip;
proxy_set_header Host $http_host;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_pass http://hap;
proxy_set_header pdaddr https://hap2.domain.com; # 新增,注意修改为你实际的扩展访问地址
}
# IM 需要
location ~ /mds2 {
proxy_set_header Host $http_host;
proxy_hide_header X-Powered-By;
proxy_set_header X-NginX-Proxy true;
proxy_pass http://hap;
proxy_redirect off;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection upgrade;
proxy_set_header pdaddr https://hap2.domain.com; # 新增,注意修改为你实际的扩展访问地址
} -
重载 nginx 后通过新的访问地址即可正 常使用 HAP 系统