メインコンテンツへ移動

ファイルの独立アドレスアクセス構成手順

注意

多くのブラウザでは、同一アドレスへの同時リクエスト数は最大6件に制限されています。そのため、ワークシートビューに多数の画像ファイルが含まれている場合、該当ビューを開くとブラウザ内でリクエストがキューに入る可能性があります。すべてのリクエストが完了する前にユーザーが別のページへ遷移すると、閲覧速度の低下やブラウザ停止が発生する場合があります。

この問題への対策として、まずファイルサービスインスタンスに十分なリソースおよびネットワーク帯域が確保されているか確認してください。加えて、本ドキュメントの手順に従い、ファイルリクエスト用に独立したアドレスを構成することで、ファイルリクエストが他のインターフェースリクエストを妨げることを防止できます。

シングルホスト環境​

注意

ファイルストレージ用の独立アドレスがHTTP/HTTPSのデフォルトポート(80/443)を利用する場合、関連環境変数設定でこれらデフォルトポートの指定は不要です。

シングルアクセスアドレスシステム​

ここでは、現在のシステムアクセス先を http://example.domain.com、追加するファイル専用アドレスを http://file.domain.com とします。

設定手順​

  1. マイクロサービスの docker-compose.yaml 設定ファイルを編集します。

    version: '3'

    services:
    core:
    image: registry.cn-hangzhou.aliyuncs.com/mdpublic/mingdaoyun-core:7.5.1
    environment: &app-environment
    ENV_ADDRESS_MAIN: "http://example.domain.com"
    ENV_APP_VERSION: "7.5.1"
    ENV_API_TOKEN: "******"
    ENV_FILE_DOMAIN: "http://file.domain.com" # ファイル独立アドレス指定用新変数
    ENV_FILE_ADDRESS_MAIN: "http://file.domain.com" # ファイル独立アドレス指定用新変数
    ENV_HAP_INTRANET_FILE_ENDPOINT: "core:8880/file" # 追加する変数。値は固定
    ports:
    - 8880:8880
    volumes:
    - ./volume/data/:/data/
    - ../data:/data/mingdao/data

    sc:
    image: registry.cn-hangzhou.aliyuncs.com/mdpublic/mingdaoyun-sc:3.2.0
    environment:
    <<: *app-environment
    volumes:
    - ./volume/data/:/data/
    ports:
    - 9000:9000 # ポートマッピングを追加し、コンテナ内の 9000 ポートをホストに公開

    command:
    image: registry.cn-hangzhou.aliyuncs.com/mdpublic/mingdaoyun-command:node1018-python36

    doc:
    image: registry.cn-hangzhou.aliyuncs.com/mdpublic/mingdaoyun-doc:2.0.0

    新規変数設定の説明:

    • ENV_FILE_DOMAIN: ファイルストレージサービス用の独立アドレスを指定
    • ENV_FILE_ADDRESS_MAIN: マイクロサービス用のファイル独立アドレスを指定
    • ENV_HAP_INTRANET_FILE_ENDPOINT の値は "core:8880/file" に固定します。
    • ファイル独立アドレスがデフォルトのHTTP/HTTPSポート(80/443)の場合、変数へのポート記載は不要

    新規ポートマッピングの説明:

    • - 9000:9000: ファイルサービス用のポートをホストに割り当て、Nginxプロキシからの利用を許可

    docサービス変数の変更点:

    • ENV_FILE_INNER_URI のデフォルト値を sc:9000 へ変更
  2. マイクロサービスを再起動します。

  3. ファイル独立アドレス用のNginxクロスオリジンプロキシ設定(参考例):

    upstream file {
    server 192.168.0.10:9000; # バックエンドの IP アドレスと、ホストにマッピングしたファイルストレージのポートを指定
    }

    server {
    listen 80;
    server_name file.domain.com; # ファイル専用アドレスを指定
    access_log /data/logs/weblogs/file.domain.com.log main; # ログのパス。任意に変更可能
    error_log /data/logs/weblogs/file.domain.com.error.log; # ログのパス。任意に変更可能

    location / {
    if ($request_method = OPTIONS) {
    return 204 "";
    }
    proxy_set_header HOST $http_host;
    proxy_pass http://file;
    proxy_hide_header Access-Control-Allow-Origin;
    add_header Access-Control-Allow-Headers authorization,content-type;
    add_header Access-Control-Allow-Origin "http://example.domain.com"; # HDP のアクセス先アドレスを指定
    }
    }
  4. プロキシ設定後、ブラウザーのキャッシュを削除します。ブラウザーの開発者ツールの Network で、ファイル関連のリクエストが専用アドレスを使用しているか確認できます。

システムに複数のアクセス先がある場合​

システムに複数のアクセス先がある環境では、各アクセス先に対応するファイル専用アドレスをそれぞれ設定する必要があります。

ここでは、現在のメインアドレスを example-external.domain.com、追加アドレスを example-internal.domain.com とします。

それぞれに対応するファイル専用アドレスとして、file-external.domain.com と file-internal.domain.com を追加します。

システムのアクセス先とファイル専用アドレスの対応は次のとおりです。

アドレスの種類メインアドレス追加アドレス
システムのアクセス先example-external.domain.comexample-internal.domain.com
ファイル独立アドレスfile-external.domain.comfile-internal.domain.com

設定手順​

  1. マイクロサービスの docker-compose.yaml ファイルを編集し、各アドレスの設定を追加してマイクロサービスを再起動します。

    version: '3'

    services:
    core:
    image: registry.cn-hangzhou.aliyuncs.com/mdpublic/mingdaoyun-core:7.5.1
    environment:
    ENV_ADDRESS_MAIN: "http://example-external.domain.com"
    ENV_APP_VERSION: "7.5.1"
    ENV_FILE_DOMAIN: "http://file-external.domain.com,http://file-internal.domain.com" # 複数ファイル独立アドレスを指定
    ENV_FILE_ADDRESS_MAIN: "http://file-external.domain.com" # メインファイル独立アドレスを指定
    ENV_HAP_INTRANET_FILE_ENDPOINT: "core:8880/file" # 追加する変数。値は固定
    ports:
    - 8880:8880
    - 18880:18880
    volumes:
    - ./volume/data/:/data/
    - ../data:/data/mingdao/data

    sc:
    image: registry.cn-hangzhou.aliyuncs.com/mdpublic/mingdaoyun-sc:3.2.0
    environment:
    <<: *app-environment
    volumes:
    - ./volume/data/:/data/
    ports:
    - 9000:9000 # ポートマッピングを追加し、コンテナ内の 9000 ポートをホストに公開

    command:
    image: registry.cn-hangzhou.aliyuncs.com/mdpublic/mingdaoyun-command:node1018-python36

    doc:
    image: registry.cn-hangzhou.aliyuncs.com/mdpublic/mingdaoyun-doc:2.0.0

    新規変数設定の説明:

    • ENV_FILE_DOMAIN: ファイルストレージサービス用の複数独立アドレスを指定
    • ENV_FILE_ADDRESS_MAIN: マイクロサービス用のメインファイル独立アドレスを指定
    • ENV_HAP_INTRANET_FILE_ENDPOINT の値は "core:8880/file" に固定します。
    • ファイル独立アドレスがデフォルトのHTTP/HTTPSポート(80/443)の場合、変数へのポート記載は不要

    新規ポートマッピングの説明:

    • - 9000:9000: ファイルサービス用のポートをホストに割り当て、Nginxプロキシからの利用を許可

    docサービス変数の変更点:

    • ENV_FILE_INNER_URI のデフォルト値を sc:9000 へ変更
  2. マイクロサービスを再起動します。

  3. メインファイル独立アドレス用Nginxクロスオリジンプロキシ設定(参考例):

    upstream file {
    server 192.168.0.10:9000; # バックエンドの IP アドレスと、ホストにマッピングしたファイルストレージのポートを指定
    }

    server {
    listen 80;
    server_name file-external.domain.com; # ファイルのメイン専用アドレスを指定
    access_log /data/logs/weblogs/file-external.domain.com.log main; # ログのパス。任意に変更可能
    error_log /data/logs/weblogs/file-external.domain.com.error.log; # ログのパス。任意に変更可能

    location / {
    if ($request_method = OPTIONS) {
    return 204 "";
    }
    proxy_set_header HOST $http_host;
    proxy_pass http://file;
    proxy_hide_header Access-Control-Allow-Origin;
    add_header Access-Control-Allow-Headers authorization,content-type;
    add_header Access-Control-Allow-Origin "http://example-external.domain.com"; # HDP のメインアクセス先を指定
    }
    }
  4. 拡張ファイル独立アドレス用Nginxクロスオリジンプロキシ設定(参考例):

    upstream file {
    server 192.168.0.10:9000; # バックエンドの IP アドレスと、ホストにマッピングしたファイルストレージのポートを指定
    }

    server {
    listen 80;
    server_name file-internal.domain.com; # ファイルの追加専用アドレスを指定
    access_log /data/logs/weblogs/file-internal.domain.com.log main; # ログのパス。任意に変更可能
    error_log /data/logs/weblogs/file-internal.domain.com.error.log; # ログのパス。任意に変更可能

    location / {
    if ($request_method = OPTIONS) {
    return 204 "";
    }
    proxy_set_header HOST $http_host;
    proxy_pass http://file;
    proxy_hide_header Access-Control-Allow-Origin;
    add_header Access-Control-Allow-Headers authorization,content-type;
    add_header Access-Control-Allow-Origin "http://example-internal.domain.com"; # HDP の追加アクセス先
    }
    }
  5. システム拡張アドレス側のプロキシで、location / および location ~ /mds2 下に拡張ファイル独立アドレス指定用の pdfileaddr ヘッダーを追加します。

    ......

    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_set_header pdaddr http://example-internal.domain.com;
    proxy_set_header pdfileaddr http://file-internal.domain.com; # pdfileaddrヘッダーを追加し、ファイルの拡張独立アドレスを指定
    proxy_pass http://ext;
    }

    location ~ /mds2 {
    proxy_set_header Host $http_host;
    proxy_hide_header X-Powered-By;
    proxy_set_header X-NginX-Proxy true;
    proxy_pass http://ext;
    proxy_redirect off;
    proxy_http_version 1.1;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection upgrade;
    proxy_set_header pdaddr http://example-internal.domain.com;
    proxy_set_header pdfileaddr http://file-internal.domain.com; # pdfileaddrヘッダーを追加し、ファイルの拡張独立アドレスを指定
    }

    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 http://example-internal.domain.com;
    proxy_set_header pdfileaddr http://file-internal.domain.com; # pdfileaddrヘッダーを追加し、ファイルの拡張独立アドレスを指定
    proxy_pass http://ext;
    proxy_redirect default;
    }
    ......
  6. プロキシ設定完了後はブラウザキャッシュをクリアしてください。その後、ブラウザの開発者ツールのNetworkタブでファイル関連リクエストの独立アドレス向き先を確認できます。

クラスタ環境​

注意

ファイルストレージ用の独立アドレスがHTTP/HTTPSのデフォルトポート(80/443)を利用する場合、関連環境変数設定でこれらデフォルトポートの指定は不要です。

シングルアクセスアドレスシステム​

ここでは、現在のシステムアクセス先を http://example.domain.com、追加するファイル専用アドレスを http://file.domain.com とします。

設定手順​

  1. 関連マイクロサービス構成を編集します。

    1. マイクロサービスの config.yaml で以下の環境変数を追加します。

      ENV_FILE_ADDRESS_MAIN: "http://file.domain.com"
      ENV_HAP_INTRANET_FILE_ENDPOINT: "www:8880/file"
      • ENV_FILE_ADDRESS_MAIN: ファイルの独立アクセスアドレス用変数
    2. マイクロサービスの service.yamlでdocサービスの ENV_FILE_INNER_URI 変数をファイルストレージ内部アドレスに変更します。

      env:
      - name: ENV_FILE_INNER_URI
      value: "192.168.0.10:9000" # ファイルストレージの内部ネットワークアドレス
    3. マイクロサービスを再起動します。

  2. ファイルストレージサービスの file.yaml 設定ファイルを編集し、関連設定追加後、ファイルストレージサービスを再起動します。

    1. file.yaml にファイルストレージサービスの独立アドレスを指定する環境変数 ENV_FILE_DOMAIN を追加します。

      ENV_FILE_DOMAIN: "http://file.domain.com"
    2. ファイルストレージサービスを再起動します。

  3. ファイル独立アドレス用のNginxクロスオリジンプロキシ設定(参考例):

    upstream file {
    server 192.168.0.10:9000; # ファイルストレージサービスの IP アドレスとポートを指定
    }

    server {
    listen 80;
    server_name file.domain.com; # ファイル専用アドレスを指定
    access_log /data/logs/weblogs/file.domain.com.log main; # ログのパス。任意に変更可能
    error_log /data/logs/weblogs/file.domain.com.error.log; # ログのパス。任意に変更可能

    location / {
    if ($request_method = OPTIONS) {
    return 204 "";
    }
    proxy_set_header HOST $http_host;
    proxy_pass http://file;
    proxy_hide_header Access-Control-Allow-Origin;
    add_header Access-Control-Allow-Headers authorization,content-type;
    add_header Access-Control-Allow-Origin "http://example.domain.com"; # HDP のアクセス先アドレスを指定
    }
    }
  4. プロキシ設定後、ブラウザーのキャッシュを削除します。ブラウザーの開発者ツールの Network で、ファイル関連のリクエストが専用アドレスを使用しているか確認できます。

システムに複数のアクセス先がある場合​

システムに複数のアクセス先がある環境では、各アクセス先に対応するファイル専用アドレスをそれぞれ設定する必要があります。

ここでは、現在のメインアドレスを example-external.domain.com、追加アドレスを example-internal.domain.com とします。

それぞれに対応するファイル専用アドレスとして、file-external.domain.com と file-internal.domain.com を追加します。

システムのアクセス先とファイル専用アドレスの対応は次のとおりです。

アドレスの種類メインアドレス追加アドレス
システムのアクセス先example-external.domain.comexample-internal.domain.com
ファイル独立アドレスfile-external.domain.comfile-internal.domain.com

設定手順​

  1. 関連マイクロサービス構成を編集します。

    1. マイクロサービスの config.yaml で以下の環境変数を追加します。

      ENV_FILE_ADDRESS_MAIN: "http://file-external.domain.com"
      ENV_HAP_INTRANET_FILE_ENDPOINT: "www:8880/file"
      • ENV_FILE_ADDRESS_MAIN: メインファイル独立アクセスアドレス用変数
    2. マイクロサービスの service.yamlでdocサービスの ENV_FILE_INNER_URI 変数をファイルストレージ内部アドレスに変更します。

      env:
      - name: ENV_FILE_INNER_URI
      value: "192.168.0.10:9000" # ファイルストレージの内部ネットワークアドレス
    3. マイクロサービスを再起動します。

  2. ファイルストレージサービスの file.yaml 設定ファイルを編集し、関連設定追加後、ファイルストレージサービスを再起動します。

    1. ファイルストレージサービスの file.yaml に環境変数 ENV_FILE_DOMAIN を追加し、複数のファイル専用アドレスを指定します。

      ENV_FILE_DOMAIN: "http://file-external.domain.com,http://file-internal.domain.com"
    2. ファイルストレージサービスを再起動します。

  3. メインファイル独立アドレス用Nginxクロスオリジンプロキシ設定(参考例):

    upstream file {
    server 192.168.0.10:9000; # ファイルストレージサービスの IP アドレスとポートを指定
    }

    server {
    listen 80;
    server_name file-external.domain.com; # ファイルのメイン専用アドレスを指定
    access_log /data/logs/weblogs/file-external.domain.com.log main; # ログのパス。任意に変更可能
    error_log /data/logs/weblogs/file-external.domain.com.error.log; # ログのパス。任意に変更可能

    location / {
    if ($request_method = OPTIONS) {
    return 204 "";
    }
    proxy_set_header HOST $http_host;
    proxy_pass http://file;
    proxy_hide_header Access-Control-Allow-Origin;
    add_header Access-Control-Allow-Headers authorization,content-type;
    add_header Access-Control-Allow-Origin "http://example-external.domain.com"; # HDP のメインアクセス先を指定
    }
    }
  4. 拡張ファイル独立アドレス用Nginxクロスオリジンプロキシ設定(参考例):

    upstream file {
    server 192.168.0.10:9000; # ファイルストレージサービスの IP アドレスとポートを指定
    }

    server {
    listen 80;
    server_name file-internal.domain.com; # ファイルの追加専用アドレスを指定
    access_log /data/logs/weblogs/file-internal.domain.com.log main; # ログのパス。任意に変更可能
    error_log /data/logs/weblogs/file-internal.domain.com.error.log; # ログのパス。任意に変更可能

    location / {
    if ($request_method = OPTIONS) {
    return 204 "";
    }
    proxy_set_header HOST $http_host;
    proxy_pass http://file;
    proxy_hide_header Access-Control-Allow-Origin;
    add_header Access-Control-Allow-Headers authorization,content-type;
    add_header Access-Control-Allow-Origin "http://example-internal.domain.com"; # HDP の追加アクセス先
    }
    }
  5. システム拡張アドレス側のプロキシで、location / および location ~ /mds2 下に拡張ファイル独立アドレス指定用の pdfileaddr ヘッダーを追加します。

    ......

    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_set_header pdaddr http://example-internal.domain.com;
    proxy_set_header pdfileaddr http://file-internal.domain.com; # pdfileaddrヘッダーを追加し、ファイルの拡張独立アドレスを指定
    proxy_pass http://ext;
    }

    location ~ /mds2 {
    proxy_set_header Host $http_host;
    proxy_hide_header X-Powered-By;
    proxy_set_header X-NginX-Proxy true;
    proxy_pass http://ext;
    proxy_redirect off;
    proxy_http_version 1.1;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection upgrade;
    proxy_set_header pdaddr http://example-internal.domain.com;
    proxy_set_header pdfileaddr http://file-internal.domain.com; # pdfileaddrヘッダーを追加し、ファイルの拡張独立アドレスを指定
    }

    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 http://example-internal.domain.com;
    proxy_set_header pdfileaddr http://file-internal.domain.com; # pdfileaddrヘッダーを追加し、ファイルの拡張独立アドレスを指定
    proxy_pass http://ext;
    proxy_redirect default;
    }
    ......
  6. プロキシ設定完了後はブラウザキャッシュをクリアしてください。その後、ブラウザの開発者ツールのNetworkタブでファイル関連リクエストの独立アドレス向き先を確認できます。