トレース セッションの HTTP 304 レスポンス

症状

Edge for Private Cloud で Edge UI から API をトレースすると、トレース ウィンドウの [Status] 列に HTTP 304 レスポンスが表示されます。

エラー メッセージ

エラー メッセージは表示されません。API プロキシ呼び出しで成功のレスポンス(HTTP 200 など)が返されますが、Edge UI のトレース ウィンドウには HTTP 304 レスポンスが表示され、トレースデータが収集されていません。

考えられる原因

Edge for Private Cloud で、Edge UI がプライベート IP アドレスからアクセスされる API プロキシのトレースを試みています。

Edge UI のトレースツールは、任意の URL に API リクエストを送信できます。Edge UI が他の内部サービスと一緒にホストホストされるデプロイ シナリオの場合、悪意のあるユーザーがトレースツールを悪用して、localhost や 127.0.0.1 などのプライベート IP アドレスを経由してサービスにリクエストを送信する可能性があります。

本番環境ではデフォルトのまま使用されていることが多く、その場合、ユーザーはプライベート IP アドレスをトレースできません。たとえば、Edge UI の公開バージョンはこのような方法でデプロイされています。

ただし、内部の開発環境やテスト環境では、API 開発者が任意の IP アドレスをトレースできるように、このデフォルトを上書きできます。通常、開発 / テスト環境は、公開アクセスが許可されないファイアウォールの内側にあります。

注: 特に必要がない限り、プライベート IP アドレスへのアクセスがトレースされないように、開発 / テスト環境でもデフォルトの値を使用することをおすすめします。

原因: プライベート IP アドレス経由で API プロキシにアクセスしている

デフォルトでは、Edge for Private Cloud の Edge UI で、プライベート IP アドレス経由で行われた API 呼び出しをトレースできません。次のアドレスはプライベート IP アドレスです。

  • ループバック アドレス(127.0.0.1 または localhost)
  • サイトのローカル アドレス(IPv4 の場合: 10.0.0.0/8、172.16.0.0/12、192.168.0.0/16)
  • 任意のローカル アドレス(localhost に解決される任意のアドレス)

たとえば、次の curl コマンドでは IP アドレス 127.0.0.1 を使用して API プロキシを呼び出していますが、このアドレスはプライベート IP アドレスと見なされます。

curl http://127.0.0.1:9001/myapiproxy

curl コマンドが成功しても、この呼び出しのトレース ウィンドウには HTTP 304 レスポンスが表示されます。

解決策

Edge for Private Cloud の Edge UI でプライベート IP アドレスのトレースを有効にするには、ui.properties に次のトークンを設定します。

conf_apigee-base_apigee.feature.enabletraceforinternaladdresses="true"

このプロパティを設定するには:

  1. エディタで ui.properties ファイルを開きます。ファイルが存在しない場合は作成します。
    vi /opt/apigee/customer/application/ui.properties
  2. 次のプロパティを true に設定します。
    conf_apigee-base_apigee.feature.enabletraceforinternaladdresses="true"
  3. 変更を ui.properties に保存します。
  4. プロパティ ファイルの所有者を apigee ユーザーにします。
    chown apigee:apigee /opt/apigee/customer/application/ui.properties
  5. Edge UI を再起動します。
    /opt/apigee/apigee-service/bin/apigee-service edge-ui restart

Edge UI のトレースツールにプライベート IP アドレスが表示されます。

後でプライベート IP アドレスのトレースを無効にするには、ui.properties でプロパティを false に設定し、Edge UI を再起動します。

関連ドキュメント(オプション)

詳細については、Edge UI でローカル IP アドレスへのアクセスを許可するをご覧ください。