跳到主要内容

多访问地址配置

双地址

默认情况下,如果将系统的第二个访问地址直接代理转发到当前系统原地址上,会有访问异常现象

因 HAP 产品特性,如果需要配置系统第二访问地址,需要将请求转发最终至容器内的 18880 端口,并在配置文件中指定第二访问地址才可以正常通过第二访问地址使用系统

配置步骤

  1. 修改 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 中共有四处新增内容
  2. 在安装管理器目录下重启 HAP 服务生效

    bash ./service.sh restartall
  3. 将第二访问地址请求转发到服务器的 18880 端口即可

多地址

如果系统要配置三个、四个等更多访问地址时,上述的双地址方式则不适用了,可参考以下方式通过 nginx 代理形式增加 pdaddr头信息实现多地址形式访问系统,(微服务版本需要在 v3.5.0 及以上)。

注意:按照此方式配置多地址访问系统时,dockerc-compose.yaml 配置文件中不能包含 ENV_EXT_MINGDAO_PROTOENV_EXT_MINGDAO_HOSTENV_EXT_MINGDAO_PORT 变量。

配置步骤

  1. docker-compose.yaml 中 app 服务 ports 下新增端口映射,将容器内的 18880 端口映射出

    - 18880:18880
  2. 在 app 服务 environment 下新增变量,变量值为你的扩展访问地址,多个值时以逗号分割

    ENV_ADDRESS_ALLOWLIST: "https://hap2.domain.com"
  3. 在安装管理器目录下重启 HAP 服务生效

    bash ./service.sh restartall
  4. 配置 nginx 文件,将新的访问地址,反向代理至 HAP 微服务的 18880 端口

    nginx 反向代理配置文件参考:

  5. 在 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; # 新增,注意修改为你实际的扩展访问地址
    }
  6. 重载 nginx 后通过新的访问地址即可正常使用 HAP 系统