2.3. Proxy Error Types & 2.4. Defining New Types (プロキシエラータイプと新しいタイプの定義)
2.3. Proxy Error Types (プロキシエラータイプ)
このセクションでは, この文書で定義されているプロキシエラータイプを列挙します。このリストの個々のエントリには, 次のフィールドを含めることができます:
- 名前: エラータイプの登録名
- 説明: エラータイプの定義
- 追加パラメータ: エラータイプとともに使用できる0個以上の追加パラメータ
- 推奨される HTTP ステータスコード: このエラーに最も適した HTTP ステータスコード
- 中間サーバーのみが生成するレスポンス: このエラーが中間サーバーによって生成されたレスポンスにのみ現れる可能性があるか (true), または転送中のレスポンスに現れる可能性があるか (false)
- 参照: この文書
2.3.1. DNS Timeout (DNS タイムアウト)
名前: dns_timeout
説明: 中間サーバーが次のホップのホスト名の IP アドレスを検索しようとしたときにタイムアウトが発生しました。
追加パラメータ: なし
推奨される HTTP ステータスコード: 504
中間サーバーのみが生成するレスポンス: true
参照: RFC 9209
2.3.2. DNS Error (DNS エラー)
名前: dns_error
説明: 中間サーバーが次のホップのホスト名の IP アドレスを検索しようとしたときに DNS エラーが発生しました。
追加パラメータ:
rcode: エラータイプを示す DNS RCODE を伝える String。[RFC8499] のセクション3を参照してください。info-code: エラータイプを示す拡張 DNS エラーコード [RFC8914] を伝える Integer。ttl: 解決が使用した DNS TTL を秒単位で示す Integer。
推奨される HTTP ステータスコード: 502
中間サーバーのみが生成するレスポンス: true
参照: RFC 9209
2.3.3. Destination Not Found (宛先が見つかりません)
名前: destination_not_found
説明: 中間サーバーは, このリクエストに使用する適切な次のホップを決定できません; たとえば, 設定されていない可能性があります。このエラーはゲートウェイに固有であり, ゲートウェイは通常, "バックエンド"サーバーを識別するために特定の設定を必要とします; フォワードプロキシは, リクエスト内の情報で次のホップを見つけられない場合に in-flight_request_error を使用します。
追加パラメータ: なし
推奨される HTTP ステータスコード: 500
中間サーバーのみが生成するレスポンス: true
参照: RFC 9209
2.3.4. Destination Unavailable (宛先は利用できません)
名前: destination_unavailable
説明: 中間サーバーは次のホップが利用できないと判断しています; たとえば, 最近の通信試行が失敗した可能性があるか, ヘルスチェックがダウンしていることを示している可能性があります。
追加パラメータ: なし
推奨される HTTP ステータスコード: 503
中間サーバーのみが生成するレスポンス: true
参照: RFC 9209
2.3.5. Destination IP Prohibited (宛先 IP が禁止されています)
名前: destination_ip_prohibited
説明: 中間サーバーは次のホップの IP アドレスへの接続を禁止するように設定されています。
追加パラメータ: なし
推奨される HTTP ステータスコード: 502
中間サーバーのみが生成するレスポンス: true
参照: RFC 9209
2.3.6. Destination IP Unroutable (宛先 IP がルーティング不可能)
名前: destination_ip_unroutable
説明: 中間サーバーは次のホップの IP アドレスへのルートを見つけることができません。
追加パラメータ: なし
推奨される HTTP ステータスコード: 502
中間サーバーのみが生成するレスポンス: true
参照: RFC 9209
2.3.7. Connection Refused (接続が拒否されました)
名前: connection_refused
説明: 中間サーバーの次のホップへの接続が拒否されました。
追加パラメータ: なし
推奨される HTTP ステータスコード: 502
中間サーバーのみが生成するレスポンス: true
参照: RFC 9209
2.3.8. Connection Terminated (接続が終了しました)
名前: connection_terminated
説明: 中間サーバーの次のホップへの接続が, レスポンスのいずれかの部分を受信する前に閉じられました。
追加パラメータ: なし
推奨される HTTP ステータスコード: 502
中間サーバーのみが生成するレスポンス: true
参照: RFC 9209
2.3.9. Connection Timeout (接続タイムアウト)
名前: connection_timeout
説明: 中間サーバーの次のホップへの接続を開く試みがタイムアウトしました。
追加パラメータ: なし
推奨される HTTP ステータスコード: 504
中間サーバーのみが生成するレスポンス: true
参照: RFC 9209
2.3.10. Connection Read Timeout (接続読み取りタイムアウト)
名前: connection_read_timeout
説明: 中間サーバーは接続上でデータ (たとえば, レスポンスの一部) を期待していましたが, 設定された時間制限内に新しいデータを受信しませんでした。
追加パラメータ: なし
推奨される HTTP ステータスコード: 504
中間サーバーのみが生成するレスポンス: false
参照: RFC 9209
2.3.11. Connection Write Timeout (接続書き込みタイムアウト)
名前: connection_write_timeout
説明: 中間サーバーは接続にデータを書き込もうとしましたが, できませんでした (たとえば, バッファがいっぱいだったため)。
追加パラメータ: なし
推奨される HTTP ステータスコード: 504
中間サーバーのみが生成するレスポンス: false
参照: RFC 9209
2.3.12. Connection Limit Reached (接続制限に達しました)
名前: connection_limit_reached
説明: 中間サーバーは次のホップへの接続数を制限するように設定されており, その制限を超えています。
追加パラメータ: なし
推奨される HTTP ステータスコード: 503
中間サーバーのみが生成するレスポンス: true
参照: RFC 9209
2.3.13. TLS Protocol Error (TLS プロトコルエラー)
名前: tls_protocol_error
説明: 中間サーバーは, ハンドシェイク中またはその後に次のホップと通信する際に TLS エラーが発生しました。
追加パラメータ:
alert-message: TLS アラートメッセージ [TLS] のセクション6の適用可能な説明サブフィールドを表す Token; たとえば, "handshake_failure" または "certificate_expired"。
推奨される HTTP ステータスコード: 502
中間サーバーのみが生成するレスポンス: true
参照: RFC 9209
2.3.14. TLS Certificate Error (TLS 証明書エラー)
名前: tls_certificate_error
説明: 中間サーバーは, 次のホップによって提示された証明書を検証する際にエラーが発生しました。
追加パラメータ: なし
推奨される HTTP ステータスコード: 502
中間サーバーのみが生成するレスポンス: true
参照: RFC 9209
2.3.15. TLS Alert Received (TLS アラートを受信しました)
名前: tls_alert_received
説明: 中間サーバーは次のホップから TLS アラートを受信しました。
追加パラメータ:
alert-id: TLS アラートメッセージ [TLS] のセクション6の適用可能なフィールドを含む Integer。alert-message: TLS アラートメッセージ [TLS] のセクション6の適用可能な説明サブフィールドを表す Token; たとえば, "handshake_failure" または "certificate_expired"。
推奨される HTTP ステータスコード: 502
中間サーバーのみが生成するレスポンス: false
参照: RFC 9209
2.3.16. HTTP Request Error (HTTP リクエストエラー)
名前: http_request_error
説明: 中間サーバーはオリジンに代わってクライアント (4xx) レスポンスを生成しています。適用可能なステータスコードには, 400, 403, 405, 406, 408, 411, 413, 414, 415, 416, 417, および 429 が含まれます (ただし, これらに限定されません)。
追加パラメータ: なし
推奨される HTTP ステータスコード: 適用可能な 4xx ステータスコード
中間サーバーのみが生成するレスポンス: true
参照: RFC 9209
2.3.17. HTTP Request Denied (HTTP リクエストが拒否されました)
名前: http_request_denied
説明: 中間サーバーは, その設定および/またはポリシー設定に基づいて HTTP リクエストを拒否しました。リクエストは次のホップに転送されませんでした。
追加パラメータ: なし
推奨される HTTP ステータスコード: 400
中間サーバーのみが生成するレスポンス: true
参照: RFC 9209
2.3.18. HTTP Incomplete Response (HTTP 不完全なレスポンス)
名前: http_response_incomplete
説明: 中間サーバーは次のホップから不完全なレスポンスを受信しました。
追加パラメータ: なし
推奨される HTTP ステータスコード: 502
中間サーバーのみが生成するレスポンス: false
参照: RFC 9209
2.3.19. HTTP Response Header Section Too Large (HTTP レスポンスヘッダーセクションが大きすぎます)
名前: http_response_header_section_size
説明: 中間サーバーは, ヘッダーセクションが大きすぎると見なされたリクエストへのレスポンスを受信しました。
追加パラメータ:
header-section-size: 受信したヘッダーのサイズを示す Integer。
推奨される HTTP ステータスコード: 502
中間サーバーのみが生成するレスポンス: false
参照: RFC 9209
2.3.20. HTTP Response Header Field Line Too Large (HTTP レスポンスヘッダーフィールド行が大きすぎます)
名前: http_response_header_size
説明: 中間サーバーは, 大きすぎると見なされたヘッダーフィールド行を含むリクエストへのレスポンスを受信しました。
追加パラメータ:
header-name: エラーをトリガーしたヘッダーフィールドの名前を示す String。header-size: エラーをトリガーしたヘッダーフィールドのサイズを示す Integer。
推奨される HTTP ステータスコード: 502
中間サーバーのみが生成するレスポンス: false
参照: RFC 9209
2.3.21. HTTP Response Body Too Large (HTTP レスポンスボディが大きすぎます)
名前: http_response_body_size
説明: 中間サーバーは, ボディが大きすぎると見なされたリクエストへのレスポンスを受信しました。
追加パラメータ:
body-size: 受信したボディのサイズを示す Integer。
推奨される HTTP ステータスコード: 502
中間サーバーのみが生成するレスポンス: false
参照: RFC 9209
2.3.22. HTTP Response Trailer Section Too Large (HTTP レスポンストレーラーセクションが大きすぎます)
名前: http_response_trailer_section_size
説明: 中間サーバーは, トレーラーセクションが大きすぎると見なされたリクエストへのレスポンスを受信しました。
追加パラメータ:
trailer-section-size: 受信したトレーラーのサイズを示す Integer。
推奨される HTTP ステータスコード: 502
中間サーバーのみが生成するレスポンス: false
参照: RFC 9209
2.3.23. HTTP Response Trailer Field Line Too Large (HTTP レスポンストレーラーフィールド行が大きすぎます)
名前: http_response_trailer_size
説明: 中間サーバーは, 大きすぎると見なされたトレーラーフィールド行を含むリクエストへのレスポンスを受信しました。
追加パラメータ:
trailer-name: エラーをトリガーしたトレーラーフィールドの名前を示す String。trailer-size: エラーをトリガーしたトレーラーフィールドのサイズを示す Integer。
推奨される HTTP ステータスコード: 502
中間サーバーのみが生成するレスポンス: false
参照: RFC 9209
2.3.24. HTTP Response Transfer-Coding Error (HTTP レスポンス転送コーディングエラー)
名前: http_response_transfer_coding
説明: 中間サーバーは, レスポンスの転送コーディングをデコードする際にエラーが発生しました。
追加パラメータ:
coding: エラーを引き起こした特定のコーディング ("HTTP Transfer Coding Registry" から) を含む Token。
推奨される HTTP ステータスコード: 502
中間サーバーのみが生成するレスポンス: false
参照: RFC 9209
2.3.25. HTTP Response Content-Coding Error (HTTP レスポンスコンテンツコーディングエラー)
名前: http_response_content_coding
説明: 中間サーバーは, レスポンスのコンテンツコーディングをデコードする際にエラーが発生しました。
追加パラメータ:
coding: エラーを引き起こした特定のコーディング ("HTTP Content Coding Registry" から) を含む Token。
推奨される HTTP ステータスコード: 502
中間サーバーのみが生成するレスポンス: false
参照: RFC 9209
2.3.26. HTTP Response Timeout (HTTP レスポンスタイムアウト)
名前: http_response_timeout
説明: 中間サーバーは, 完全なレスポンスを待機する際に設定された時間制限に達しました。
追加パラメータ: なし
推奨される HTTP ステータスコード: 504
中間サーバーのみが生成するレスポンス: false
参照: RFC 9209
2.3.27. HTTP Upgrade Failed (HTTP アップグレード失敗)
名前: http_upgrade_failed
説明: 中間サーバーと次のホップ間で HTTP バージョンのアップグレードをネゴシエートするプロセスが失敗しました。
追加パラメータ: なし
推奨される HTTP ステータスコード: 502
中間サーバーのみが生成するレスポンス: true
参照: RFC 9209
2.3.28. HTTP Protocol Error (HTTP プロトコルエラー)
名前: http_protocol_error
説明: 中間サーバーは, 次のホップと通信する際に HTTP プロトコルエラーが発生しました。このエラーは, より具体的なものが定義されていない場合にのみ使用すべきです。
追加パラメータ: なし
推奨される HTTP ステータスコード: 502
中間サーバーのみが生成するレスポンス: false
参照: RFC 9209
2.3.29. Proxy Internal Response (プロキシ内部レスポンス)
名前: proxy_internal_response
説明: 中間サーバーは, 次のホップへの接続を試みずに自分自身でレスポンスを生成しました。
追加パラメータ: なし
推奨される HTTP ステータスコード: レスポンスに最も適したステータスコード
中間サーバーのみが生成するレスポンス: true
参照: RFC 9209
2.3.30. Proxy Internal Error (プロキシ内部エラー)
名前: proxy_internal_error
説明: 中間サーバーは, オリジンとは無関係な内部エラーが発生しました。
追加パラメータ: なし
推奨される HTTP ステータスコード: 500
中間サーバーのみが生成するレスポンス: true
参照: RFC 9209
2.3.31. Proxy Configuration Error (プロキシ設定エラー)
名前: proxy_configuration_error
説明: 中間サーバーは, その設定に関するエラーが発生しました。
追加パラメータ: なし
推奨される HTTP ステータスコード: 500
中間サーバーのみが生成するレスポンス: true
参照: RFC 9209
2.3.32. Proxy Loop Detected (プロキシループが検出されました)
名前: proxy_loop_detected
説明: 中間サーバーはリクエストを自分自身に転送しようとしたか, 別の手段を使用してループが検出されました (たとえば, [RFC8586])。
追加パラメータ: なし
推奨される HTTP ステータスコード: 502
中間サーバーのみが生成するレスポンス: true
参照: RFC 9209
2.4. Defining New Proxy Error Types (新しいプロキシエラータイプの定義)
新しいプロキシエラータイプは, "HTTP Proxy Error Types" レジストリに登録することで定義できます。
登録リクエストは, [RFC8126] のセクション4.5に従って, エキスパートレビューによって審査および承認されます。仕様文書があることが望ましいですが, 必須ではありません。
エキスパートは, リクエストを評価する際に次の要素を考慮すべきです:
- コミュニティのフィードバック
- 値が十分に明確に定義されているかどうか
- 汎用タイプは, ベンダー固有, アプリケーション固有, またはデプロイメント固有の値よりも優先されます。コミュニティで汎用値について合意できない場合, タイプの名前は対応して具体的であるべきです (たとえば, ベンダー, アプリケーション, またはデプロイメントを識別する接頭辞を付けるなど)。
- 追加パラメータは, 登録された Proxy-Status パラメータと競合してはなりません。
登録リクエストは次のテンプレートを使用すべきです:
名前: [Token タイプのプロキシエラータイプの名前]
説明: [プロキシエラータイプを生成する条件の説明]
追加パラメータ: [0個以上のオプションのパラメータと, それらの許容される構造化タイプ]
推奨される HTTP ステータスコード: [このエントリに適した HTTP ステータスコード]
中間サーバーのみが生成するレスポンス: ['true' または 'false']
参照: [このエラータイプを定義する仕様への参照; 任意]
注記: [任意]
プロキシエラータイプが中間サーバーによって生成されていないレスポンスに現れる可能性がある場合 -- たとえば, 転送接続からレスポンスがストリーミングされる際にエラーが検出され, Proxy-Status トレーラーフィールドが追加される場合 -- '中間サーバーのみが生成するレスポンス' は 'false' にすべきです。プロキシエラータイプが中間サーバーによって生成されたレスポンスにのみ現れる場合は, 'true' にすべきです。
登録リクエストの送信先の詳細については, https://www.iana.org/assignments/http-proxy-status のレジストリを参照してください。