このセクションの内容:

はじめに

リバース プロキシは、高可用性を実現したりネットワーク セキュリティを強化するために使用されることがあります。アプリケーションがホストされているポートにユーザー リクエストを転送するようリバース プロキシ サーバーを構成することによって、リバース プロキシ環境で DTP を実行できます。さらに、必要なヘッダーを DTP に送信するようにリバース プロキシ サーバーを構成するか、あるいは DTP Tomcat サーバー構成を更新する必要があります。 

以下の図は基本的なリバース プロキシのフローです。

次の図は、コンテキスト パスを使用するように構成された環境のリバース プロキシのフローを示しています。

設定

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

X-Forwarded-Prefix ヘッダーは、DTP アプリケーション (Enterprise Pack、Data Collector など) でコンテキスト パス設定を構成した場合にのみ必要です。ヘッダーの値は、Enterprise Pack ネットワーク構成設定のコンテキスト パス フィールド ( ネットワークの設定 を参照)、および/または Data Collector のコンテキスト パス設定の Data Collector 構成ファイルの <dc-reverse-proxy-path> 要素の値 ( Data Collector の設定 を参照) と一致する必要があります。 

Host ヘッダーは、元のリクエストのホスト、つまりリバース プロキシ ホストでなければなりません。

転送リクエスト

リクエストを転送する方法の詳細については、リバース プロキシ サーバーのドキュメントを参照してください。以下は、nginx の場合の設定例です。

コンテキスト パス設定の転送設定

次の例は、異なるコンテキスト パスの 1 つのポートから DTP アプリケーション (Extension Designer を含む) にアクセスできるように構成した場合に nginx を設定する方法を示しています。  

 server {
    listen 80;
    server_name proxy.company.com;
    
    location /dtp/data-collector/ {
        proxy_pass  http://dtp.host.com:8082/;
        proxy_set_header X-Forwarded-Host $http_host;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_set_header X-Forwarded-Prefix /dtp/data-collector;
    }
    
    location /dtp/enterprise-pack/ {
        proxy_pass   http://dtp.host.com:8314/;
        proxy_set_header X-Forwarded-Host $http_host;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_set_header X-Forwarded-Prefix /dtp/enterprise-pack;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
    }
    
    location /dtp/ {
        proxy_pass   http://dtp.host.com:8080/;
        proxy_set_header X-Forwarded-Host $http_host;
        proxy_set_header X-Forwarded-Proto $scheme;
        set $proxy_x_forwarded_prefix /dtp;
        if ($uri ~ "^/dtp/(pst|pstsec|grs|tcm|licenseserver)(?:/.*)$") {
            set $proxy_x_forwarded_prefix $proxy_x_forwarded_prefix/$1;
        }
        proxy_set_header X-Forwarded-Prefix $proxy_x_forwarded_prefix;
    }
}

DTP の転送設定

次の例は、ポート 3001 のリバース プロキシを介してポート 8443 でホストされている DTP にアクセスするように nginx を設定する方法を示しています。  

# DTP: HTTPS 3001 -> HTTPS 8443
server {
    listen  3001            ssl;
    listen  [::]:3001       ssl;

    ssl on;
    ssl_certificate /etc/nginx/certs/ssl-certificate-bundle.crt;
    ssl_certificate_key /etc/nginx/certs/ssl-certificate-key.key;
    ssl_session_cache       builtin:1000 shared:SSL:10m;
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
    ssl_ciphers HIGH:!aNULL:!eNULL:!EXPORT:!CAMELLIA:!DES:!MD5:!PSK:!RC4;
    ssl_prefer_server_ciphers on;
 
    location / {
        proxy_pass              https://dtp.yourcompany.com:8443;
        proxy_set_header        Host $http_host;
        proxy_set_header        X-Forwarded-Host $http_host;
        proxy_set_header        X-Forwarded-Proto https;
        proxy_read_timeout      90;
    }
}

Enterprise Pack の転送設定

次の例は、ポート 3002 のリバース プロキシを介してポート 8314 でホストされている Enterprise Pack にアクセスするように nginx を設定する方法を示しています。リバース プロキシ環境で DTP Enterprise Pack を使用する方法については、「ネットワークの設定」を参照してください。

# Enterprise Pack: HTTPS 3002 -> HTTP 8314
server {
    listen  3002            ssl;
    listen  [::]:3002       ssl;

    ssl on;
    ssl_certificate /etc/nginx/certs/ssl-certificate-bundle.crt; 
    ssl_certificate_key /etc/nginx/certs/ssl-certificate-key.key; 
    ssl_session_cache builtin:1000 shared:SSL:10m; 
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2; 
    ssl_ciphers HIGH:!aNULL:!eNULL:!EXPORT:!CAMELLIA:!DES:!MD5:!PSK:!RC4; 
    ssl_prefer_server_ciphers on;
    
    location / {
        proxy_pass              http://entpack.yourcompany.com:8314;
        proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header        X-Forwarded-Host $http_host;
        proxy_set_header        X-Forwarded-Proto https;
        proxy_read_timeout      90;        

        # websocket
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";    
    }
}

Data Collector の転送設定

次の例は、ポート 3003 のリバース プロキシを介して、ポート 8082 でホストされている Data Collector にデータを送信するように nginx を設定する方法を示しています。リバース プロキシ環境で Data Collector を使用する方法については、「Data Collector の設定」を参照してください。 

# Data Collector: HTTPS 3003 -> HTTPS 8082
server {
    listen  3003            ssl;
    listen  [::]:3003       ssl;    
   
    ssl on;
    ssl_certificate /etc/nginx/certs/ssl-certificate-bundle.crt; 
    ssl_certificate_key /etc/nginx/certs/ssl-certificate-key.key; 
    ssl_session_cache       builtin:1000 shared:SSL:10m;
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
    ssl_ciphers HIGH:!aNULL:!eNULL:!EXPORT:!CAMELLIA:!DES:!MD5:!PSK:!RC4;
    ssl_prefer_server_ciphers on;    

    location / {
        proxy_pass              https://dc.yourcompany.com:8082;
        proxy_set_header        X-Forwarded-Host $http_host;
        proxy_set_header        X-Forwarded-Proto $scheme;
        proxy_read_timeout      90;    
    }
}

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

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

既知の問題と制約