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

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

Allow: GET, POST, HEAD

バックエンド サーバーが HTTP ステータス コード 405 Method Not Allowed,Allow ヘッダーを送信しない場合、Apigee は、HTTP ステータス コード 502 Bad Gateway とエラーコード protocol.http.Response405WithoutAllowHeader をクライアント アプリケーションに返します。このエラーに対処するための推奨される解決策は、 RFC 7231、セクション 6.5.5: 405 Method Not Allowed を遵守するようにバックエンド サーバーを修正するか、トラブルシューティング ハンドブックの 502 Bad Gateway - Response 4.05 で説明しているように、エラー処理を使用して、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 ヘッダーを true に設定する

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

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

  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 ヘッダーを false に設定する

このセクションでは、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 ヘッダーを false に構成するに記載されているすべての手順が正しく行われていることを確認します。ステップを見逃した場合は、すべてのステップをもう一度正しくやり直します。
  4. それでもプロパティ HTTP.ignore.allow_header.for.405 を変更できない場合は、Apigee Edge サポートにお問い合わせください。