メインコンテンツへ移動

HAPシステムの複数アクセスアドレス設定方法

背景​

実際の運用では、同一のHAPシステムへ複数のドメイン名またはアドレス(例:hap.example.com、new.example.com)からアクセスするケースがあります。
しかし、HAPシステムのルーティングやセキュリティの仕組み上、新規アクセスアドレスを単純にリバースプロキシでメインアドレスに転送すると、セッション認証の失敗やページリソースの異常読み込みなどの問題が発生します。
本ドキュメントでは、HAPシステムをマルチアドレスで安全かつ安定して利用するための正しい設定方法についてご案内します。

基本原則​

HAPシステムが複数ソースアドレスからのリクエストを正しく処理するには、「各リクエストの"真の発信元"」をバックエンドサービスが正確に識別することが必須です。そのために、以下3点が連係するように設定を行います。

  1. 統一プロキシ転送先
    拡張アドレスからのすべてのリクエストは、リバースプロキシ(例:Nginx)を介し、HAPコンテナ内部の専用ポート18880へ転送する必要があります。

  2. ソースアドレス(pdaddr)の明示
    リバースプロキシの設定で、HTTPリクエストヘッダーに「pdaddr」を追加します。値にはクライアントからの実際のリクエストアドレス全体を指定します。これにより、HAPバックエンドへ明確に発信元を通知できます。

  3. アドレスホワイトリスト
    すべての拡張アクセスアドレスを、アドレスホワイトリスト用の環境変数「ENV_ADDRESS_ALLOWLIST」に追加し、システム側で正当性を検証できるようにします。

上記設定で、システムはアドレスごとにリクエストを認識し、動的に正しいリソースURLを生成できるため、通常通りの利用が可能となります。

設定手順​

  1. コンテナ内18880ポートのマッピング追加
    docker-compose.yamlのappサービスのportsセクションに、以下を追加します。

    - 18880:18880
  2. 環境変数(拡張アドレスホワイトリスト)の追加
    appサービスのenvironmentセクションに、対象の拡張アクセスアドレスを指定します。
    複数ある場合はカンマ区切りで記載してください。

    ENV_ADDRESS_ALLOWLIST: "https://hap2.domain.com"
  3. HAPサービスの再起動
    インストールマネージャディレクトリにて、以下コマンドでサービスを再起動します。

    bash ./service.sh restartall
  4. Nginxリバースプロキシ設定
    新規アクセスアドレスをHAPマイクロサービス用の18880ポートへ転送するよう、nginxの設定ファイルを作成・編集します。
    設定例:HTTP、HTTPS

  5. nginx設定ファイルへのproxy_set_header pdaddr追加
    各locationディレクティブに、システムアクセスアドレスを明示する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; # 追加。実際の拡張アクセスアドレスに変更してください
    }

    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; # 追加。実際の拡張アクセスアドレスに変更してください
    }

    location ~ ^/(agent|api/workflow/api/sse/chat) {
    set $md_real_ip '';
    if ($http_x_real_ip) {
    set $md_real_ip $http_x_real_ip;
    }
    if ($http_x_real_ip = '') {
    set $md_real_ip $remote_addr;
    }

    proxy_buffering off;
    proxy_read_timeout 30m;
    proxy_send_timeout 30m;
    client_max_body_size 16m;
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $md_real_ip;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header X-HTTP-Method-Override "";
    proxy_set_header pdaddr https://hap2.domain.com; # 追加。実際の拡張アクセスアドレスに変更してください
    proxy_pass http://hap;
    proxy_redirect default;
    }
  6. nginxリロード → 新規アドレスで動作確認
    nginxをリロードし、新たに設定したアクセスアドレスにてHAPシステムが問題なくご利用いただけることをご確認ください。