draft-ietf-httpbis-proxy-status-07.txt   draft-ietf-httpbis-proxy-status-08.txt 
HTTP M. Nottingham HTTP M. Nottingham
Internet-Draft Fastly Internet-Draft Fastly
Intended status: Standards Track P. Sikora Intended status: Standards Track P. Sikora
Expires: 13 April 2022 Google Expires: 16 April 2022 Google
10 October 2021 13 October 2021
The Proxy-Status HTTP Response Header Field The Proxy-Status HTTP Response Header Field
draft-ietf-httpbis-proxy-status-07 draft-ietf-httpbis-proxy-status-08
Abstract Abstract
This document defines the Proxy-Status HTTP field to convey the This document defines the Proxy-Status HTTP field to convey the
details of intermediary response handling, including generated details of intermediary response handling, including generated
errors. errors.
Note to Readers Note to Readers
_RFC EDITOR: please remove this section before publication_ _RFC EDITOR: please remove this section before publication_
skipping to change at page 1, line 48 skipping to change at page 1, line 48
Internet-Drafts are working documents of the Internet Engineering Internet-Drafts are working documents of the Internet Engineering
Task Force (IETF). Note that other groups may also distribute Task Force (IETF). Note that other groups may also distribute
working documents as Internet-Drafts. The list of current Internet- working documents as Internet-Drafts. The list of current Internet-
Drafts is at https://datatracker.ietf.org/drafts/current/. Drafts is at https://datatracker.ietf.org/drafts/current/.
Internet-Drafts are draft documents valid for a maximum of six months Internet-Drafts are draft documents valid for a maximum of six months
and may be updated, replaced, or obsoleted by other documents at any and may be updated, replaced, or obsoleted by other documents at any
time. It is inappropriate to use Internet-Drafts as reference time. It is inappropriate to use Internet-Drafts as reference
material or to cite them other than as "work in progress." material or to cite them other than as "work in progress."
This Internet-Draft will expire on 13 April 2022. This Internet-Draft will expire on 16 April 2022.
Copyright Notice Copyright Notice
Copyright (c) 2021 IETF Trust and the persons identified as the Copyright (c) 2021 IETF Trust and the persons identified as the
document authors. All rights reserved. document authors. All rights reserved.
This document is subject to BCP 78 and the IETF Trust's Legal This document is subject to BCP 78 and the IETF Trust's Legal
Provisions Relating to IETF Documents (https://trustee.ietf.org/ Provisions Relating to IETF Documents (https://trustee.ietf.org/
license-info) in effect on the date of publication of this document. license-info) in effect on the date of publication of this document.
Please review these documents carefully, as they describe your rights Please review these documents carefully, as they describe your rights
skipping to change at page 7, line 5 skipping to change at page 7, line 5
from the origin server. This is the case when, for example, the from the origin server. This is the case when, for example, the
origin server can't be contacted, so the proxy has to create its own origin server can't be contacted, so the proxy has to create its own
response. response.
Other Proxy Error Types can be added to (potentially partial) Other Proxy Error Types can be added to (potentially partial)
responses that were generated by the origin server or some other responses that were generated by the origin server or some other
inbound server. For example, if the forward connection abruptly inbound server. For example, if the forward connection abruptly
closes, an intermediary might add Proxy-Status with an appropriate closes, an intermediary might add Proxy-Status with an appropriate
error as a trailer field. error as a trailer field.
Proxy Error Types that are registered with a 'Only generated by Proxy Error Types that are registered with a 'Response only generated
intermediaries' value of 'true' indicate that they can only occur on by intermediaries' value of 'true' indicate that they can only occur
responses generated by the intermediary. If the value is 'false', on responses generated by the intermediary. If the value is 'false',
the response might be generated by the intermediary or an inbound the response might be generated by the intermediary or an inbound
server. server.
Section 2.3 lists the Proxy Error Types defined in this document; new Section 2.3 lists the Proxy Error Types defined in this document; new
ones can be defined using the procedure outlined in Section 2.4. ones can be defined using the procedure outlined in Section 2.4.
For example: For example:
HTTP/1.1 504 Gateway Timeout HTTP/1.1 504 Gateway Timeout
Proxy-Status: ExampleCDN; error=connection_timeout Proxy-Status: ExampleCDN; error=connection_timeout
indicates that this 504 response was generated by ExampleCDN, due to indicates that this 504 response was generated by ExampleCDN, due to
a connection timeout when going forward. a connection timeout when going forward.
Or: Or:
HTTP/1.1 429 Too Many Requests HTTP/1.1 429 Too Many Requests
Proxy-Status: r34.example.net; error=http_request_error, ExampleCDN Proxy-Status: r34.example.net; error=http_request_error, ExampleCDN
indicates that this 429 Too Many Requests response was generated by indicates that this 429 Too Many Requests response was generated by
the reverse proxy, not the CDN or the origin. r34.example.net, not the CDN or the origin.
When sending the error parameter, the most specific Proxy Error Type When sending the error parameter, the most specific Proxy Error Type
SHOULD be sent, provided that it accurately represents the error SHOULD be sent, provided that it accurately represents the error
condition. If an appropriate Proxy Error Type is not defined, there condition. If an appropriate Proxy Error Type is not defined, there
are a number of generic error types (e.g., proxy_internal_error, are a number of generic error types (e.g., proxy_internal_error,
http_protocol_error) that can be used. If they are not suitable, http_protocol_error) that can be used. If they are not suitable,
consider registering a new Proxy Error Type (see Section 2.4). consider registering a new Proxy Error Type (see Section 2.4).
Each Proxy Error Type has a Recommended HTTP Status Code. When Each Proxy Error Type has a Recommended HTTP Status Code. When
generating a HTTP response containing error, its HTTP status code generating a HTTP response containing error, its HTTP status code
skipping to change at page 10, line 25 skipping to change at page 10, line 25
* Name: dns_timeout * Name: dns_timeout
* Description: The intermediary encountered a timeout when trying to * Description: The intermediary encountered a timeout when trying to
find an IP address for the next hop hostname. find an IP address for the next hop hostname.
* Extra Parameters: None. * Extra Parameters: None.
* Recommended HTTP status code: 504 * Recommended HTTP status code: 504
* Only generated by intermediaries: true * Response only generated by intermediaries: true
* Reference: [this document] * Reference: [this document]
2.3.2. DNS Error 2.3.2. DNS Error
* Name: dns_error * Name: dns_error
* Description: The intermediary encountered a DNS error when trying * Description: The intermediary encountered a DNS error when trying
to find an IP address for the next hop hostname. to find an IP address for the next hop hostname.
* Extra Parameters: * Extra Parameters:
- rcode: A sf-string conveying the DNS RCODE that indicates the - rcode: A sf-string conveying the DNS RCODE that indicates the
error type. See [RFC8499], Section 3. error type. See [RFC8499], Section 3.
- info-code: A sf-integer conveying the Extended DNS Error Code - info-code: A sf-integer conveying the Extended DNS Error Code
info-code. See [RFC8914]. info-code. See [RFC8914].
* Recommended HTTP status code: 502 * Recommended HTTP status code: 502
* Only generated by intermediaries: true * Response only generated by intermediaries: true
* Reference: [this document] * Reference: [this document]
2.3.3. Destination Not Found 2.3.3. Destination Not Found
* Name: destination_not_found * Name: destination_not_found
* Description: The intermediary cannot determine the appropriate * Description: The intermediary cannot determine the appropriate
next hop to use for this request; for example, it may not be next hop to use for this request; for example, it may not be
configured. Note that this error is specific to gateways, which configured. Note that this error is specific to gateways, which
typically require specific configuration to identify the "backend" typically require specific configuration to identify the "backend"
server; forward proxies use in-band information to identify the server; forward proxies use in-band information to identify the
origin server. origin server.
* Extra Parameters: None. * Extra Parameters: None.
* Recommended HTTP status code: 500 * Recommended HTTP status code: 500
* Only generated by intermediaries: true * Response only generated by intermediaries: true
* Reference: [this document] * Reference: [this document]
2.3.4. Destination Unavailable 2.3.4. Destination Unavailable
* Name: destination_unavailable * Name: destination_unavailable
* Description: The intermediary considers the next hop to be * Description: The intermediary considers the next hop to be
unavailable; e.g., recent attempts to communicate with it may have unavailable; e.g., recent attempts to communicate with it may have
failed, or a health check may indicate that it is down. failed, or a health check may indicate that it is down.
* Extra Parameters: None. * Extra Parameters: None.
* Recommended HTTP status code: 503 * Recommended HTTP status code: 503
* Only generated by intermediaries: true * Response only generated by intermediaries: true
* Reference: [this document] * Reference: [this document]
2.3.5. Destination IP Prohibited 2.3.5. Destination IP Prohibited
* Name: destination_ip_prohibited * Name: destination_ip_prohibited
* Description: The intermediary is configured to prohibit * Description: The intermediary is configured to prohibit
connections to the next hop IP address. connections to the next hop IP address.
* Extra Parameters: None. * Extra Parameters: None.
* Recommended HTTP status code: 502 * Recommended HTTP status code: 502
* Only generated by intermediaries: true * Response only generated by intermediaries: true
* Reference: [this document] * Reference: [this document]
2.3.6. Destination IP Unroutable 2.3.6. Destination IP Unroutable
* Name: destination_ip_unroutable * Name: destination_ip_unroutable
* Description: The intermediary cannot find a route to the next hop * Description: The intermediary cannot find a route to the next hop
IP address. IP address.
* Extra Parameters: None. * Extra Parameters: None.
* Recommended HTTP status code: 502 * Recommended HTTP status code: 502
* Only generated by intermediaries: true * Response only generated by intermediaries: true
* Reference: [this document] * Reference: [this document]
2.3.7. Connection Refused 2.3.7. Connection Refused
* Name: connection_refused * Name: connection_refused
* Description: The intermediary's connection to the next hop was * Description: The intermediary's connection to the next hop was
refused. refused.
* Extra Parameters: None. * Extra Parameters: None.
* Recommended HTTP status code: 502 * Recommended HTTP status code: 502
* Only generated by intermediaries: true * Response only generated by intermediaries: true
* Reference: [this document] * Reference: [this document]
2.3.8. Connection Terminated 2.3.8. Connection Terminated
* Name: connection_terminated * Name: connection_terminated
* Description: The intermediary's connection to the next hop was * Description: The intermediary's connection to the next hop was
closed before complete response was received. closed before complete response was received.
* Extra Parameters: None. * Extra Parameters: None.
* Recommended HTTP status code: 502 * Recommended HTTP status code: 502
* Only generated by intermediaries: false * Response only generated by intermediaries: false
* Reference: [this document] * Reference: [this document]
2.3.9. Connection Timeout 2.3.9. Connection Timeout
* Name: connection_timeout * Name: connection_timeout
* Description: The intermediary's attempt to open a connection to * Description: The intermediary's attempt to open a connection to
the next hop timed out. the next hop timed out.
* Extra Parameters: None. * Extra Parameters: None.
* Recommended HTTP status code: 504 * Recommended HTTP status code: 504
* Only generated by intermediaries: true * Response only generated by intermediaries: true
* Reference: [this document] * Reference: [this document]
2.3.10. Connection Read Timeout 2.3.10. Connection Read Timeout
* Name: connection_read_timeout * Name: connection_read_timeout
* Description: The intermediary was expecting data on a connection * Description: The intermediary was expecting data on a connection
(e.g., part of a response), but did not receive any new data in a (e.g., part of a response), but did not receive any new data in a
configured time limit. configured time limit.
* Extra Parameters: None. * Extra Parameters: None.
* Recommended HTTP status code: 504 * Recommended HTTP status code: 504
* Only generated by intermediaries: false * Response only generated by intermediaries: false
* Reference: [this document] * Reference: [this document]
2.3.11. Connection Write Timeout 2.3.11. Connection Write Timeout
* Name: connection_write_timeout * Name: connection_write_timeout
* Description: The intermediary was attempting to write data to a * Description: The intermediary was attempting to write data to a
connection, but was not able to (e.g., because its buffers were connection, but was not able to (e.g., because its buffers were
full). full).
* Extra Parameters: None. * Extra Parameters: None.
* Recommended HTTP status code: 504 * Recommended HTTP status code: 504
* Only generated by intermediaries: false * Response only generated by intermediaries: false
* Reference: [this document] * Reference: [this document]
2.3.12. Connection Limit Reached 2.3.12. Connection Limit Reached
* Name: connection_limit_reached * Name: connection_limit_reached
* Description: The intermediary is configured to limit the number of * Description: The intermediary is configured to limit the number of
connections it has to the next hop, and that limit has been connections it has to the next hop, and that limit has been
passed. passed.
* Extra Parameters: None. * Extra Parameters: None.
* Recommended HTTP status code: 503 * Recommended HTTP status code: 503
* Only generated by intermediaries: true * Response only generated by intermediaries: true
* Reference: [this document] * Reference: [this document]
2.3.13. TLS Protocol Error 2.3.13. TLS Protocol Error
* Name: tls_protocol_error * Name: tls_protocol_error
* Description: The intermediary encountered a TLS error when * Description: The intermediary encountered a TLS error when
communicating with the next hop, either during handshake or communicating with the next hop, either during handshake or
afterwards. afterwards.
* Extra Parameters: None. * Extra Parameters: None.
* Recommended HTTP status code: 502 * Recommended HTTP status code: 502
* Only generated by intermediaries: false * Response only generated by intermediaries: false
* Reference: [this document] * Reference: [this document]
* Notes: Not appropriate when a TLS alert is received; see * Notes: Not appropriate when a TLS alert is received; see
tls_alert_received tls_alert_received
2.3.14. TLS Certificate Error 2.3.14. TLS Certificate Error
* Name: tls_certificate_error * Name: tls_certificate_error
* Description: The intermediary encountered an error when verifying * Description: The intermediary encountered an error when verifying
the certificate presented by the next hop. the certificate presented by the next hop.
* Extra Parameters: None. * Extra Parameters: None.
* Recommended HTTP status code: 502 * Recommended HTTP status code: 502
* Only generated by intermediaries: true * Response only generated by intermediaries: true
* Reference: [this document] * Reference: [this document]
2.3.15. TLS Alert Received 2.3.15. TLS Alert Received
* Name: tls_alert_received * Name: tls_alert_received
* Description: The intermediary received a TLS alert from the next * Description: The intermediary received a TLS alert from the next
hop. hop.
* Extra Parameters: * Extra Parameters:
- alert-id: an sf-integer containing the applicable value from - alert-id: an sf-integer containing the applicable value from
the TLS Alerts registry. See {!RFC8446}}. the TLS Alerts registry. See {!RFC8446}}.
- alert-message: an sf-token or sf-string containing the - alert-message: an sf-token or sf-string containing the
applicable description string from the TLS Alerts registry. applicable description string from the TLS Alerts registry.
See [RFC8446]. See [RFC8446].
* Recommended HTTP status code: 502 * Recommended HTTP status code: 502
* Only generated by intermediaries: false * Response only generated by intermediaries: false
* Reference: [this document] * Reference: [this document]
2.3.16. HTTP Request Error 2.3.16. HTTP Request Error
* Name: http_request_error * Name: http_request_error
* Description: The intermediary is generating a client (4xx) * Description: The intermediary is generating a client (4xx)
response on the origin's behalf. Applicable status codes include response on the origin's behalf. Applicable status codes include
(but are not limited to) 400, 403, 405, 406, 408, 411, 413, 414, (but are not limited to) 400, 403, 405, 406, 408, 411, 413, 414,
skipping to change at page 15, line 47 skipping to change at page 15, line 47
* Extra Parameters: * Extra Parameters:
- status-code: an sf-integer containing the generated status - status-code: an sf-integer containing the generated status
code. code.
- status-phrase: an sf-string containing the generated status - status-phrase: an sf-string containing the generated status
phrase. phrase.
* Recommended HTTP status code: The applicable 4xx status code * Recommended HTTP status code: The applicable 4xx status code
* Only generated by intermediaries: true * Response only generated by intermediaries: true
* Reference: [this document] * Reference: [this document]
* Notes: This type helps distinguish between responses generated by * Notes: This type helps distinguish between responses generated by
intermediaries from those generated by the origin. intermediaries from those generated by the origin.
2.3.17. HTTP Request Denied 2.3.17. HTTP Request Denied
* Name: http_request_denied * Name: http_request_denied
* Description: The intermediary rejected the HTTP request based on * Description: The intermediary rejected the HTTP request based on
its configuration and/or policy settings. The request wasn't its configuration and/or policy settings. The request wasn't
forwarded to the next hop. forwarded to the next hop.
* Extra Parameters: None. * Extra Parameters: None.
* Recommended HTTP status code: 403 * Recommended HTTP status code: 403
* Only generated by intermediaries: true * Response only generated by intermediaries: true
* Reference: [this document] * Reference: [this document]
2.3.18. HTTP Incomplete Response 2.3.18. HTTP Incomplete Response
* Name: http_response_incomplete * Name: http_response_incomplete
* Description: The intermediary received an incomplete response to * Description: The intermediary received an incomplete response to
the request from the next hop. the request from the next hop.
* Extra Parameters: None. * Extra Parameters: None.
* Recommended HTTP status code: 502 * Recommended HTTP status code: 502
* Only generated by intermediaries: false * Response only generated by intermediaries: false
* Reference: [this document] * Reference: [this document]
2.3.19. HTTP Response Header Section Too Large 2.3.19. HTTP Response Header Section Too Large
* Name: http_response_header_section_size * Name: http_response_header_section_size
* Description: The intermediary received a response to the request * Description: The intermediary received a response to the request
whose header section was considered too large. whose header section was considered too large.
* Extra Parameters: * Extra Parameters:
- header-section-size: an sf-integer indicating how large the - header-section-size: an sf-integer indicating how large the
headers received were. Note that they might not be complete; headers received were. Note that they might not be complete;
i.e., the intermediary may have discarded or refused additional i.e., the intermediary may have discarded or refused additional
data. data.
* Recommended HTTP status code: 502 * Recommended HTTP status code: 502
* Only generated by intermediaries: false * Response only generated by intermediaries: false
* Reference: [this document] * Reference: [this document]
2.3.20. HTTP Response Header Field Line Too Large 2.3.20. HTTP Response Header Field Line Too Large
* Name: http_response_header_size * Name: http_response_header_size
* Description: The intermediary received a response to the request * Description: The intermediary received a response to the request
containing an individual header field line that was considered too containing an individual header field line that was considered too
large. large.
skipping to change at page 17, line 29 skipping to change at page 17, line 29
* Extra Parameters: * Extra Parameters:
- header-name: an sf-string indicating the name of the header - header-name: an sf-string indicating the name of the header
field that triggered the error. field that triggered the error.
- header-size: an sf-integer indicating the size of the header - header-size: an sf-integer indicating the size of the header
field that triggered the error. field that triggered the error.
* Recommended HTTP status code: 502 * Recommended HTTP status code: 502
* Only generated by intermediaries: false * Response only generated by intermediaries: false
* Reference: [this document] * Reference: [this document]
2.3.21. HTTP Response Body Too Large 2.3.21. HTTP Response Body Too Large
* Name: http_response_body_size * Name: http_response_body_size
* Description: The intermediary received a response to the request * Description: The intermediary received a response to the request
whose body was considered too large. whose body was considered too large.
* Extra Parameters: * Extra Parameters:
- body-size: an sf-integer indicating how large the body received - body-size: an sf-integer indicating how large the body received
was. Note that it may not have been complete; i.e., the was. Note that it may not have been complete; i.e., the
intermediary may have discarded or refused additional data. intermediary may have discarded or refused additional data.
* Recommended HTTP status code: 502 * Recommended HTTP status code: 502
* Only generated by intermediaries: false * Response only generated by intermediaries: false
* Reference: [this document] * Reference: [this document]
2.3.22. HTTP Response Trailer Section Too Large 2.3.22. HTTP Response Trailer Section Too Large
* Name: http_response_trailer_section_size * Name: http_response_trailer_section_size
* Description: The intermediary received a response to the request * Description: The intermediary received a response to the request
whose trailer section was considered too large. whose trailer section was considered too large.
* Extra Parameters: * Extra Parameters:
- trailer-section-size: an sf-integer indicating how large the - trailer-section-size: an sf-integer indicating how large the
trailers received were. Note that they might not be complete; trailers received were. Note that they might not be complete;
i.e., the intermediary may have discarded or refused additional i.e., the intermediary may have discarded or refused additional
data. data.
* Recommended HTTP status code: 502 * Recommended HTTP status code: 502
* Only generated by intermediaries: false * Response only generated by intermediaries: false
* Reference: [this document] * Reference: [this document]
2.3.23. HTTP Response Trailer Field Line Too Large 2.3.23. HTTP Response Trailer Field Line Too Large
* Name: http_response_trailer_size * Name: http_response_trailer_size
* Description: The intermediary received a response to the request * Description: The intermediary received a response to the request
containing an individual trailer field line that was considered containing an individual trailer field line that was considered
too large. too large.
skipping to change at page 18, line 43 skipping to change at page 18, line 43
* Extra Parameters: * Extra Parameters:
- trailer-name: an sf-string indicating the name of the trailer - trailer-name: an sf-string indicating the name of the trailer
field that triggered the error. field that triggered the error.
- trailer-size: an sf-integer indicating the size of the trailer - trailer-size: an sf-integer indicating the size of the trailer
field that triggered the error. field that triggered the error.
* Recommended HTTP status code: 502 * Recommended HTTP status code: 502
* Only generated by intermediaries: false * Response only generated by intermediaries: false
* Reference: [this document] * Reference: [this document]
2.3.24. HTTP Response Transfer-Coding Error 2.3.24. HTTP Response Transfer-Coding Error
* Name: http_response_transfer_coding * Name: http_response_transfer_coding
* Description: The intermediary encountered an error decoding the * Description: The intermediary encountered an error decoding the
transfer-coding of the response. transfer-coding of the response.
* Extra Parameters: * Extra Parameters:
- coding: an sf-token containing the specific coding (from the - coding: an sf-token containing the specific coding (from the
HTTP Transfer Coding Registry) that caused the error. HTTP Transfer Coding Registry) that caused the error.
* Recommended HTTP status code: 502 * Recommended HTTP status code: 502
* Only generated by intermediaries: false * Response only generated by intermediaries: false
* Reference: [this document] * Reference: [this document]
2.3.25. HTTP Response Content-Coding Error 2.3.25. HTTP Response Content-Coding Error
* Name: http_response_content_coding * Name: http_response_content_coding
* Description: The intermediary encountered an error decoding the * Description: The intermediary encountered an error decoding the
content-coding of the response. content-coding of the response.
* Extra Parameters: * Extra Parameters:
- coding: an sf-token containing the specific coding (from the - coding: an sf-token containing the specific coding (from the
HTTP Content Coding Registry) that caused the error. HTTP Content Coding Registry) that caused the error.
* Recommended HTTP status code: 502 * Recommended HTTP status code: 502
* Only generated by intermediaries: false * Response only generated by intermediaries: false
* Reference: [this document] * Reference: [this document]
2.3.26. HTTP Response Timeout 2.3.26. HTTP Response Timeout
* Name: http_response_timeout * Name: http_response_timeout
* Description: The intermediary reached a configured time limit * Description: The intermediary reached a configured time limit
waiting for the complete response. waiting for the complete response.
* Extra Parameters: None. * Extra Parameters: None.
* Recommended HTTP status code: 504 * Recommended HTTP status code: 504
* Only generated by intermediaries: false * Response only generated by intermediaries: false
* Reference: [this document] * Reference: [this document]
2.3.27. HTTP Upgrade Failed 2.3.27. HTTP Upgrade Failed
* Name: http_upgrade_failed * Name: http_upgrade_failed
* Description: The HTTP Upgrade between the intermediary and the * Description: The HTTP Upgrade between the intermediary and the
next hop failed. next hop failed.
* Extra Parameters: None. * Extra Parameters: None.
* Recommended HTTP status code: 502 * Recommended HTTP status code: 502
* Only generated by intermediaries: true * Response only generated by intermediaries: true
* Reference: [this document] * Reference: [this document]
2.3.28. HTTP Protocol Error 2.3.28. HTTP Protocol Error
* Name: http_protocol_error * Name: http_protocol_error
* Description: The intermediary encountered a HTTP protocol error * Description: The intermediary encountered a HTTP protocol error
when communicating with the next hop. This error should only be when communicating with the next hop. This error should only be
used when a more specific one is not defined. used when a more specific one is not defined.
* Extra Parameters: None. * Extra Parameters: None.
* Recommended HTTP status code: 502 * Recommended HTTP status code: 502
* Only generated by intermediaries: false * Response only generated by intermediaries: false
* Reference: [this document] * Reference: [this document]
2.3.29. Proxy Internal Response 2.3.29. Proxy Internal Response
* Name: proxy_internal_response * Name: proxy_internal_response
* Description: The intermediary generated the response locally, * Description: The intermediary generated the response locally,
without attempting to connect to the next hop (e.g. in response to without attempting to connect to the next hop (e.g. in response to
a request to a debug endpoint terminated at the intermediary). a request to a debug endpoint terminated at the intermediary).
* Extra Parameters: None. * Extra Parameters: None.
* Recommended HTTP status code: The most appropriate status code for * Recommended HTTP status code: The most appropriate status code for
the response the response
* Only generated by intermediaries: true * Response only generated by intermediaries: true
* Reference: [this document] * Reference: [this document]
2.3.30. Proxy Internal Error 2.3.30. Proxy Internal Error
* Name: proxy_internal_error * Name: proxy_internal_error
* Description: The intermediary encountered an internal error * Description: The intermediary encountered an internal error
unrelated to the origin. unrelated to the origin.
* Extra Parameters: None * Extra Parameters: None
* Recommended HTTP status code: 500 * Recommended HTTP status code: 500
* Only generated by intermediaries: true * Response only generated by intermediaries: true
* Reference: [this document] * Reference: [this document]
2.3.31. Proxy Configuration Error 2.3.31. Proxy Configuration Error
* Name: proxy_configuration_error * Name: proxy_configuration_error
* Description: The intermediary encountered an error regarding its * Description: The intermediary encountered an error regarding its
configuration. configuration.
* Extra Parameters: None * Extra Parameters: None
* Recommended HTTP status code: 500 * Recommended HTTP status code: 500
* Only generated by intermediaries: true * Response only generated by intermediaries: true
* Reference: [this document] * Reference: [this document]
2.3.32. Proxy Loop Detected 2.3.32. Proxy Loop Detected
* Name: proxy_loop_detected * Name: proxy_loop_detected
* Description: The intermediary tried to forward the request to * Description: The intermediary tried to forward the request to
itself, or a loop has been detected using different means (e.g. itself, or a loop has been detected using different means (e.g.
[RFC8586]). [RFC8586]).
* Extra Parameters: None. * Extra Parameters: None.
* Recommended HTTP status code: 502 * Recommended HTTP status code: 502
* Only generated by intermediaries: true * Response only generated by intermediaries: true
* Reference: [this document] * Reference: [this document]
2.4. Defining New Proxy Error Types 2.4. Defining New Proxy Error Types
New Proxy Error Types can be defined by registering them in the HTTP New Proxy Error Types can be defined by registering them in the HTTP
Proxy Error Types registry. Proxy Error Types registry.
Registration requests are reviewed and approved by Expert Review, as Registration requests are reviewed and approved by Expert Review, as
per [RFC8126], Section 4.5. A specification document is appreciated, per [RFC8126], Section 4.5. A specification document is appreciated,
skipping to change at page 22, line 38 skipping to change at page 22, line 38
* Description: [a description of the conditions that generate the * Description: [a description of the conditions that generate the
Proxy Error Type] Proxy Error Type]
* Extra Parameters: [zero or more optional parameters, along with * Extra Parameters: [zero or more optional parameters, along with
their allowable type(s)] their allowable type(s)]
* Recommended HTTP status code: [the appropriate HTTP status code * Recommended HTTP status code: [the appropriate HTTP status code
for this entry] for this entry]
* Only generated by intermediaries: ['true' or 'false'] * Response only generated by intermediaries: ['true' or 'false']
* Reference: [to a specification defining this error type; optional] * Reference: [to a specification defining this error type; optional]
* Notes: [optional] * Notes: [optional]
If the Proxy Error Type might occur in responses that are not If the Proxy Error Type might occur in responses that are not
generated by the intermediary -- for example, when an error is generated by the intermediary -- for example, when an error is
detected as the response is streamed from a forward connection, detected as the response is streamed from a forward connection,
causing a Proxy-Status trailer field to be appended -- the 'Only causing a Proxy-Status trailer field to be appended -- the 'Response
generated by intermediaries' should be 'false'. If the Proxy Error only generated by intermediaries' should be 'false'. If the Proxy
Type only occurs in responses that are generated by the intermediary, Error Type only occurs in responses that are generated by the
it should be 'true'. intermediary, it should be 'true'.
See the registry at https://iana.org/assignments/http-proxy-status See the registry at https://iana.org/assignments/http-proxy-status
(https://iana.org/assignments/http-proxy-status) for details on where (https://iana.org/assignments/http-proxy-status) for details on where
to send registration requests. to send registration requests.
3. IANA Considerations 3. IANA Considerations
Upon publication, please create the HTTP Proxy-Status Parameters Upon publication, please create the HTTP Proxy-Status Parameters
registry and the HTTP Proxy Error Types registry at registry and the HTTP Proxy Error Types registry at
https://iana.org/assignments/http-proxy-status https://iana.org/assignments/http-proxy-status
 End of changes. 39 change blocks. 
45 lines changed or deleted 45 lines changed or added

This html diff was produced by rfcdiff 1.48. The latest version is available from http://tools.ietf.org/tools/rfcdiff/