リバースプロキシの背後で Validate を使用する

このトピックでは、リバースプロキシの背後に展開された Validate の動作、base.url サービスプロパティ、およびリバースプロキシのセットアップを構成および検証する方法について説明します。

概要

リバースプロキシは Validate の前面に配置され、クライアント接続を終了して、要求を Validate (Tomcat) バックエンドに転送します。

Validate がリバースプロキシの背後に展開されている場合、インポートパス、CI ビルドリンク、ホストされるインストーラーリンク、Web/API 参照といった、生成または表示されるすべての URL では、エンドユーザーがアクセスするものとして、外部からアクセス可能な URL を使用する必要があります。

base.url サービスプロパティは、kwservice を使用して構成され、Validate が正しい外部リンクを生成できるように、公開 URL を通知します。一方、リバースプロキシは、それらの外部要求を内部ホストとポートにルーティングする処理を行います。

Validate は、NGINX、Apache HTTP Server、Caddy、HAProxy などのいくつかのリバースプロキシソリューションでテストされており、非‑SSL 構成と SSL 構成の両方をサポートします (既知の制限がいくつかあります)。

リバースプロキシを構成する

前提条件

  • インストールされ、実行されている Validate サーバー

  • 既に構成されており、エンドユーザーがアクセス可能なリバースプロキシ (NGINX や Apache HTTP Server などのサービスを使用)

  • パブリックホスト名の DNS エントリ (例:validate.example.com)

Validate でリバースプロキシ設定を構成するには、以下のようにします。

  1. Validate で kwservice または validate service を使用して、外部ベース URL を設定します。

    kwservice set-service-property klocwork base.url https://validate.example.com

    base.url プロパティに関する制限事項は、以下のとおりです。

    • 完全な <protocol>://<host>:<port> 形式を使用する(プロトコルのデフォルトを使用する場合、ポートは任意指定)

    • 使用できるのは http プロトコルと https プロトコルのみ

    • 値が有効でない場合、コマンドは検証エラーで失敗する

  2. https://validate.example.com などの公開 URL による閲覧を実行し、リバースプロキシを検証します。Validate にサインインできることを確認します。

  3. 認証、ダウンロード、および Web API 呼び出しもパブリックホスト経由で成功することを確認します。

ベース URL プロパティを削除する

base.url プロパティを削除し、内部ホスト/ポートを使用した Validate に戻すには:

kwservice remove-service-property klocwork base.url

制限事項

SSLリバースプロキシ経由でValidateを実行する場合、以下の既知の制限事項が発生する可能性があります。

  • 以下の操作との連携が制限されます。

    • 設定済みのkwtoolstore

    • IDEAプラグインからのサーバープロジェクトの取得

    • Validateサーバー経由でホストされているEclipseプラグインのインストール

    • 他のサーバーからのプロジェクトのインポート

  • 以下のユーティリティは現在サポートされていません。

    • validate_backup

    • validate_restore

Apacheリバースプロキシ経由で他のサーバーからプロジェクトをインポートする場合にも、制限事項が発生する可能性があります。

トラブルシューティング

このセクションでは、リバースプロキシ構成に関する一般的な問題とその解決方法を示します。

Validate が内部的に SSL なしで機能するが、外部的には HTTPS 経由で機能しない

原因:X-Forwarded-Proto ヘッダーまたはプロキシ SSL 構成がないか、または正しくありません。

修正策:NGINX などで転送ヘッダーが正しく設定されていることを確認してください。

proxy_set_header X-Forwarded-Proto https;
proxy_set_header X-Forwarded-Host  $host;

ブラウザーで混合コンテンツが表示されたり、HTTPS から HTTP‑にリダイレクトされたりする

原因:X-Forwarded-Proto ヘッダーまたはプロキシ SSL 構成がないか、または正しくありません。

修正策:プロキシで X-Forwarded-Proto https が設定されており、TLS が終了することを確認してください。

ユーザーが Validate に内部アクセスできるが、プロキシホスト名/パスを使用してアクセスできない

原因:DNS またはファイアウォールがプロキシを指していないか、またはプロキシの場所/VirtualHost がホストと一致していません。

修正策:DNS の検証を行い、プロキシへのポートを開き、ホスト名が一致していることを確認してください。

インストーラーのダウンロードが内部 Validate サーバー URL を使用して生成される

原因:base.url が設定されていないか、または正しく設定されていません。

修正策:kwservice set-service-property klocwork base.url <url>base.url に外部プロキシ URL を設定してください。

CI ビルドリンクが間違ったホストを指す

原因:ツールが内部 URL を解決しています。

修正策:CI ビルドをロードする前に、base.url がサーバーで設定されていることを確認してください。

NGINX 経由でアクセスすると、一部の Validate ページが空白表示される

原因:一部のリバースプロキシで、データバッファリングのデフォルトが低すぎる可能性がある

修正策:NGINX などでバッファリング設定を調整するか、または無効にすることを検討してください。

コピー
# Disable proxy buffering
proxy_buffering off;
proxy_request_buffering off;

コマンドラインツール (例:kwadmin load) をプロキシ経由で実行すると、502 エラーが返される

原因:大規模操作に対してタイムアウトが短すぎるか、またはストリームされた応答がバッファリングによって妨げられています。

修正策:NGINX などでリバースプロキシのタイムアウト設定を増やしてください。

コピー
proxy_read_timeout 600s;
  proxy_connect_timeout 600s;
  proxy_send_timeout 600s;