Message Processor の 405 プロパティに ignore allow ヘッダーを構成する

Apigee Edge のドキュメントを表示しています。
Apigee X のドキュメントをご覧ください。

クライアント サーバーの通信では、クライアントによって提示された HTTP リクエスト メソッドがサーバーによって認識されているが、ターゲット リソースでサポートされていない場合、サーバーは HTTP ステータス コード 405 Method Not Allowed を返します。Apigee Edge でも同様に、バックエンド サーバーは HTTP ステータス コード 405 Method Not Allowed. で応答できます。

Apigee Edge では、 RFC 7231 のセクション 6.5.5: 405 Method Not Allowed に沿って、Allow ヘッダーに許可されたメソッドのリストを含む 405 Method Not Allowed レスポンスが送信されることを想定しています。

Allow ヘッダーは次の形式で送信する必要があります。

Allow: HTTP_METHODS

たとえば、バックエンド サーバーで GET メソッド、POST メソッド、HEAD メソッドが許可されている場合、Allow ヘッダーに次のようにメソッドを含める必要があります。

Allow: GET, POST, HEAD

バックエンド サーバーが HTTP ステータス コード 405 Method Not Allowed, を含む Allow ヘッダーを送信しない場合、Apigee はエラーコード protocol.http.Response405WithoutAllowHeader を含む HTTP ステータス コード 502 Bad Gateway をクライアント アプリケーションに返します。このエラーに対処する推奨ソリューションは、 RFC 7231 のセクション 6.5.5: 405 Method Not Allowed に準拠するようにバックエンド サーバーを修正するか、トラブルシューティング ハンドブック Allow 502 Bad Gateway なしのレスポンス 405 で説明されているように、障害処理を使用して Allow ヘッダーを含む HTTP ステータス コード 405 Method Not Allowed を返すことです。

ただし、例外的に、バックエンドを修正したり、API プロキシを変更して、すぐにこの問題を解決したりできないことがあります。

その場合、Message Processor レベルで 405 プロパティ HTTP.ignore.allow_header.for.405 の ignore allow ヘッダーを一時的に設定できます。このプロパティを true に設定すると、バックエンド サーバーが Allow ヘッダーなしで HTTP ステータス コード 405 Method Not Allowed を送信した場合でも、Apigee は 502 Bad Gateway レスポンスをクライアント アプリケーションに返しません。

Allow ヘッダーを使用して HTTP ステータス コード 405 Method Not Allowed を送信するようにバックエンド サーバーを修正したら、プロパティ HTTP.ignore.allow_header.for.405 をデフォルト値の false に戻すことができます。

始める前に

このドキュメントの手順を使用する前に、次のトピックを理解しておいてください。

Message Processor の 405 プロパティの ignore allow ヘッダーの構成

Apigee Edge では、プロパティ HTTP.ignore.allow_header.for.405 がデフォルトで false に設定されています。これにより、バックエンド サーバーが Allow ヘッダーなしで HTTP ステータス コード 405 Method Not Allowed を送信した場合に、Apigee Edge はエラーコード protocol.http.Response405WithoutAllowHeader502 Bad Gateway をクライアント アプリケーションに返すことができます。Apigee Edge がクライアント アプリケーションに 502 Bad Gateway を送信しないようにするには、Message Processor の HTTP.ignore.allow_header.for.405 プロパティの値を true に設定する必要があります。

このセクションでは、 Edge の構成方法の構文に従ってトークンを使用して、Message Processor でプロパティ HTTP.ignore.allow_header.for.405 から true を構成する方法について説明します。

  1. Message Processor マシンで、エディタで次のファイルを開きます。まだ存在しない場合は、作成します。

    /opt/apigee/customer/application/message-processor.properties
    

    たとえば、 vi を使用してファイルを開くには、次のように入力します。

    vi /opt/apigee/customer/application/message-processor.properties
    
  2. プロパティ ファイルに次の形式の行を追加します。
    conf_http_HTTP.ignore.allow_header.for.405=true
    
  3. 変更を保存します。
  4. 以下のように、apigee ユーザーがプロパティ ファイルの所有者であることを確認します。
    chown apigee:apigee /opt/apigee/customer/application/message-processor.properties
    
  5. 次のように Message Processor を再起動します。
    /opt/apigee/apigee-service/bin/apigee-service edge-message-processor restart
    
  6. Message Processor が複数ある場合は、すべての Message Processor で上記の手順を繰り返します。

Message Processor で 405 プロパティの ignore allow ヘッダーが true に設定されていることを確認する

このセクションでは、Message Processor でプロパティ HTTP.ignore.allow_header.for.405true に更新されたことを確認する方法について説明します。

conf_http_HTTP.ignore.allow_header.for.405 トークンを使用して Message Processor のプロパティの値を更新したにもかかわらず、実際のプロパティ HTTP.ignore.allow_header.for.405true に設定されているかどうかを確認する必要があります。

  1. Message Processor マシンで、/opt/apigee/edge-message-processor/conf ディレクトリのプロパティ HTTP.ignore.allow_header.for.405 を検索し、次のように true に設定されていることを確認します。
    grep -ri "HTTP.ignore.allow_header.for.405" /opt/apigee/edge-message-processor/conf
    
  2. Message Processor でプロパティが正常に更新されると、上記のコマンドでは、次のように http.properties ファイルでプロパティ HTTP.ignore.allow_header.for.405 の値が true として表示されます。
    /opt/apigee/edge-message-processor/conf/http.properties:HTTP.ignore.allow_header.for.405=true
    
  3. HTTP.ignore.allow_header.for.405 プロパティに false の値が表示されている場合は、Message Processor の 405 プロパティの ignore allow ヘッダーを true に構成するのすべての手順が正しく実行されていることを確認します。どのステップも見逃した場合は、すべてのステップを正しく繰り返します。
  4. それでもプロパティ HTTP.ignore.allow_header.for.405 を変更できない場合は、Apigee Edge サポートにお問い合わせください。

Message Processor の 405 プロパティの ignore allow ヘッダーの構成

このセクションでは、Edge の構成方法で説明されている構文に従ってトークンを使用し、Message Processor でプロパティ HTTP.ignore.allow_header.for.405 をデフォルト値 false に構成する方法について説明します。

  1. プロパティ HTTP.ignore.allow_header.for.405true に変更されていることを確認します。これを行うには、次のコマンドを使用して、/opt/apigee/edge-message-processor/conf ディレクトリでこのプロパティを検索し、値を確認します。
    grep -ri "HTTP.ignore.allow_header.for.405" /opt/apigee/edge-message-processor/conf
    
  2. Message Processor でプロパティが true に設定されている場合、上記のコマンドでは、次のように、http.properties ファイルでプロパティ HTTP.ignore.allow_header.for.405 の値が true と表示されます。
    /opt/apigee/edge-message-processor/conf/http.properties:HTTP.ignore.allow_header.for.405=true
    
  3. プロパティ HTTP.ignore.allow_header.for.405false(デフォルト値)に設定されていることを上記のコマンドで確認した場合、他に何もする必要はありません。つまり、次の手順をスキップします。
  4. プロパティ HTTP.ignore.allow_header.for.405true に設定されている場合は、次の手順でデフォルト値を false に戻します。
  5. Message Processor マシンで、エディタで次のファイルを開きます。

    /opt/apigee/customer/application/message-processor.properties
    

    たとえば、 vi を使用してファイルを開くには、次のように入力します。

    vi /opt/apigee/customer/application/message-processor.properties
    
  6. プロパティ ファイルから次の行を削除します。
    conf_http_HTTP.ignore.allow_header.for.405=true
    
  7. 変更を保存します。
  8. 以下のように、apigee ユーザーがプロパティ ファイルの所有者であることを確認します。
    chown apigee:apigee /opt/apigee/customer/application/message-processor.properties
    
  9. 次のように Message Processor を再起動します。
    /opt/apigee/apigee-service/bin/apigee-service edge-message-processor restart
    
  10. Message Processor が複数ある場合は、すべての Message Processor で上記の手順を繰り返します。

Message Processor で 405 プロパティの ignore allow ヘッダーが false に設定されていることを確認する

このセクションでは、Message Processor でプロパティ HTTP.ignore.allow_header.for.405false に更新されたことを確認する方法について説明します。

トークン conf_http_HTTP.ignore.allow_header.for.405 を使用して Message Processor の値を更新する場合でも、実際のプロパティ HTTP.ignore.allow_header.for.405false に設定されていることを確認する必要があります。

  1. Message Processor マシンで、/opt/apigee/edge-message- processor/conf ディレクトリのプロパティ HTTP.ignore.allow_header.for.405 を検索し、次のように false に設定されていることを確認します。
    grep -ri "HTTP.ignore.allow_header.for.405" /opt/apigee/edge-message-processor/conf
    
  2. Message Processor でプロパティが正常に更新されると、上記のコマンドでは、次のように http.properties ファイルでプロパティ HTTP.ignore.allow_header.for.405 の値が false として表示されます。
    /opt/apigee/edge-message-processor/conf/http.properties:HTTP.ignore.allow_header.for.405=false
    
  3. 引き続きプロパティ HTTP.ignore.allow_header.for.405 の値が true として表示される場合は、 Message Processor の 405 プロパティの ignore allow ヘッダーの構成に正しく記載されていることを確認します。どの手順も見逃した場合は、すべての手順を正しく繰り返してください。
  4. それでもプロパティ HTTP.ignore.allow_header.for.405 を変更できない場合は、Apigee Edge サポートにお問い合わせください。