Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Comment: Published by Scroll Versions from space DTPDEVEL and version 2023.2

はじめに

リバース プロキシとは、クライアントとバックエンドのサーバーを仲介するものです。リバース プロキシはクライアントからのリクエストを受信し、プロキシ設定に従ってリクエストを変更し、変更されたリクエストをサーバーに送信します。結果として、リバース プロキシはサーバーのパフォーマンスを向上させ、インフラストラクチャのセキュリティを強化します。

DTP をリバース プロキシ サーバーで正しく動作させるために、環境に応じて以下を設定します。

以下も参照:

Anchor
ReverseProxyServerConfig
ReverseProxyServerConfig
リバース プロキシ サーバーの設定

このセクションの内容:

Table of Contents
maxLevel1

はじめに

...

リバース プロキシの構成方法はいくつかありますが、DTP がサポートしているのはポートツーポートおよびパスツーポート構成です。パスツーポート構成の「パス」は、「コンテキスト パス」とも呼ばれます。どちらの方法でも、アプリケーションがホストされているポートにユーザー リクエストをフォワードするようリバース プロキシ サーバーを設定します。さらに、必要なヘッダーを DTP に送信するようにリバース プロキシ サーバーを構成するか、あるいは DTP Tomcat サーバーの設定を変更する必要があります。

Anchor
PortToPort
PortToPort
ポートツーポート構成

ポートツーポート構成では、リバース プロキシは 1 つのポートでクライアントのトラフィックを受信し、DTP アプリケーション ポートのいずれかにトラフィックをリダイレクトします。このタイプの構成では、プロキシ サーバー上で利用可能なポート数に実装が制限されます。次のフォーマットは、DTP アプリケーションにポートツーポート構成が適用される方法を示しています。

DTP Report Center:

<PROTOCOL>://<PROXY>:8080 -> <PROTOCOL>://<DTP_HOST>:8080

Data Collector:

<PROTOCOL>://<PROXY>:8082 -> <PROTOCOL>://<DTP_HOST>:8082

Enterprise Pack:

<PROTOCOL>://<PROXY>:8314 -> <PROTOCOL>://<DTP_HOST>:8314

要件

リバース プロキシは、DTP に転送されるリクエストに X-Forwarded- ヘッダーを追加し、アプリケーションが適切に URL を生成できるようにする必要があります。X-Forwarded- ヘッダーは、ログイン、ナビゲーション、ALM システムなどの外部アプリケーションに送信されるリンクの HTTP リダイレクトに影響を与えます。次の X-Forwarded- ヘッダーが必要です。

  • X-Forwarded-Host 
  • X-Forwarded-Proto   (別のプロトコルに中継する場合のみ必要)
  • X-Forwarded-For

...

次の設定では、すべての基底のサービス/Web アプリケーションがローカルマシンの HTTP 上で動作している必要があります (Data Collector は、デフォルトでは HTTPS を使用します)。設定はプロトコルのリダイレクト (たとえば HTTPS から HTTP など) をサポートしていますが、リバース プロキシで HTTPS を有効にするには追加の設定が必要です (サンプルのコメントを参照)。  

...

LF を改行として設定を保存する必要があります。CRLF を改行として使用すると、設定ブロックにネストされたコメントによってパースの問題が発生する可能性があります。

リバース プロキシ環境で DTP Enterprise Pack を使用する方法については、「Network Settings」を参照してください。

リバース プロキシ環境で Data Collector を使用する方法については、「Configuring Data Collector」を参照してください。 

WebSockets でのリバース プロキシのサポート 

WebSockets の通信のために NGINX リバース プロキシ サーバーを構成する方法については次を参照してください: http://nginx.org/en/docs/http/websocket.html

Anchor
PathToPort
PathToPort
パスツーポート構成 (コンテキスト パス)

パスツーポート構成では、クライアントのトラフィックは特定のコンテキスト パスでプロキシに送信され、DTP アプリケーション ポートのいずれかにリダイレクトされます。パスツーポート構成はプロキシ サーバーで利用可能なポートの数に制限されません。リクエストのコンテキスト パスに基づいて、多数の異なるバックエンド サーバーにリクエストをリダイレクトできます。そのため、この構成では標準の HTTP ポート (HTTP では 80、HTTPS では 433) がよく使用されます。

次のフォーマットは、DTP アプリケーションにコンテキストパス構成が適用される方法を示しています。

DTP Report Center

<PROTOCOL>://<PROXY>:8080/grs -> <PROTOCOL>://<DTP_HOST>/grs

Data collector

<PROTOCOL>://<PROXY>:8082 -> <PROTOCOL>://<DTP_HOST>:8082

Enterprise Pack

<PROTOCOL>://<PROXY>:8314 -> <PROTOCOL>://<DTP_HOST>:8314

必須の要件ではありませんが、一般的にすべての DTP and Enterprise Pack サーバーは共通のコンテキスト パスの下に構成され、サブコンテキスト パスで個々のサービス/Web アプリケーションが動作します。

<PROTOCOL>://<PROXY>/dtp/<WEBAPP> -> <PROTOCOL>://dtp:<PORT>/<WEBAPP>

要件

次のヘッダーを DTP に送信するようにリバース プロキシを設定します。

  • X-Forwarded-Host 
  • X-Forwarded-Prefix 
  • X-Forwarded-Proto   (別のプロトコルに中継する場合のみ必要)

ヘッダーの値は、Enterprise Pack ネットワーク構成設定のコンテキスト パス フィールド ( Network Settings を参照)、および/または Data Collector のコンテキスト の Data Collector 構成ファイルの <dc-reverse-proxy-path> 要素の値 ( Configuring Data Collector を参照) と一致する必要があります。Host ヘッダーは、元のリクエストのホスト、つまりリバース プロキシ ホストでなければなりません。

...

次の設定では、基底のサービス/Web アプリケーションがローカルマシンの HTTP 上で動作している必要があります (Data Collector は、デフォルトでは HTTPS を使用します)。設定はプロトコルのリダイレクト (たとえば HTTPS から HTTP など) をサポートしていますが、リバース プロキシで HTTPS を有効にするには追加の設定が必要です (サンプルのコメントを参照)。  

Code Block
languagebash
 http {

  # Simplifies setting the "Connection" header.
  # Required by Enterprise Pack application.
  map $http_upgrade $connection_upgrade {
    default upgrade;
    ''      close;
  }

  # Simplifies setting the "X-Forwarded-Prefix" header.
  map $request_uri $x_forwarded_prefix {
    ~^/dtp/(dc|ep|grs|licenseserver|pstsec|pst)/?   /dtp/$1;
    ~^/dtp/?.*                                          /dtp;
  }

  server {
    listen 80;
    
    # listen 443 ssl;
    # ssl_certificate     /path/to/cert;
    # ssl_certificate_key /path/to/key;

    location /dtp/ {

      # Redirect to app with a trailing slash if not present.
      if ($request_uri = $x_forwarded_prefix) {
        return 301 $request_uri/;
      }

      # Add necessary headers for WebSocket proxying.
      # Required by Enterprise Pack application.
      proxy_http_version 1.1;
      proxy_set_header Upgrade    $http_upgrade;
      proxy_set_header Connection $connection_upgrade;

      # Add necessary "X-Forwarded-" proxy headers.
      proxy_set_header X-Forwarded-Proto  $scheme;
      proxy_set_header X-Forwarded-Host   $http_host;
      proxy_set_header X-Forwarded-Prefix $x_forwarded_prefix;
      proxy_set_header X-Forwarded-For    $proxy_add_x_forwarded_for;

       # Proxy incoming requests to the DTP server by default.
      proxy_pass http://localhost:8080/;

      location /dtp/dc/ {
        # Proxy incoming requests to Data Collector.
        proxy_pass http://localhost:8082/;
      }

      location /dtp/ep/ {
        # Proxy incoming requests to Enterprise Pack.
        proxy_pass http://localhost:8314/;
      }
      
    }
  }
}

LF を改行として設定を保存する必要があります。CRLF を改行として使用すると、設定ブロックにネストされたコメントによってパースの問題が発生する可能性があります。

リバース プロキシ環境で DTP Enterprise Pack を使用する方法については、「Network Settings」を参照してください。

リバース プロキシ環境で Data Collector を使用する方法については、「Configuring Data Collector」を参照してください。 

WebSockets でのリバース プロキシのサポート 

...

次の設定では、環境変数として DTP_HOSTNAME を指定し、基底のサービスは HTTP で実行されている必要があります (Data Collector は、デフォルトでは HTTPS を使用します)。設定はプロトコルのリダイレクト (たとえば HTTPS から HTTP など) をサポートしていますが、リバース プロキシで HTTPS を有効にするには追加の設定が必要です (サンプルのコメントを参照)。

...

(warning) <Location> および <LocationMatch> ディレクティブの順序が重要です。受信リクエストに一致するすべての <Location> および <LocationMatch> ディレクティブが実行時にマージされます。

Anchor
DTPReverseProxyConfig
DTPReverseProxyConfig
リバース プロキシ環境での DTP の構成

Anchor
DCConfig
DCConfig
Data Collector の設定

Data Collector はコード解析/テスト ツールからのレポートを受け取るコンポーネントです。正しく動作させるには、リバース プロキシ サーバーと連携するように設定する必要があります。詳細については Data Collector セクションの「Reverse Proxy Configuration」を参照してください。

Anchor
DEPConfig
DEPConfig
DTP Enterprise Pack の設定

組織で DTP Enterprise Pack を使用している場合は、リバース プロキシ サーバーと連携するように設定する必要があります。詳細については、DTP Enterprise Pack のネットワーク設定ページの「リバース プロキシ」のセクションを参照してください。

Anchor
Troubleshooting
Troubleshooting
トラブルシューティング

問題: 413 error from NGINX - "Entity too large"

...

Code Block
client_max_body_size 512M;

Anchor
KnownIssues
KnownIssues
既知の問題と制約

  • プロキシ サーバーのポートは JMS ポートではないため、プロキシ サーバーを経由して JMS イベント ブローカー URL にアクセスすることはできません。

...