<?xml version='1.0' encoding='UTF-8'?>
<?xml-stylesheet type="text/xsl" href="http-proxy-status.xsl"?>
<?xml-model href="http-proxy-status.rng" schematypens="http://relaxng.org/ns/structure/1.0" ?>
<registry xmlns="http://www.iana.org/assignments" id="http-proxy-status">
  <title>Hypertext Transfer Protocol (HTTP) Proxy-Status</title>
  <created>2021-10-22</created>
  <updated>2026-03-06</updated>

  <registry id="http-proxy-status-parameters">
    <title>HTTP Proxy-Status Parameters</title>
    <xref type="rfc" data="rfc9209"/>
    <registration_rule>Expert Review</registration_rule>
    <expert>Mark Nottingham</expert>
    <note>New Proxy-Status parameters and proxy error types, along with changes 
to existing ones, can be requested using the <xref type="uri" data="https://github.com/protocol-registries/proxy-status">registry interface</xref> or 
the ietf-http-wg@w3.org mailing list.
    </note>
      <record date="2021-10-22">
        <name>error</name>
        <description>The error parameter's value is a Token that is a proxy error
          type.  When present, it indicates that the intermediary encountered
          an issue when obtaining this response.</description>
        <xref type="rfc" data="rfc9209"/>
      </record>
      <record date="2021-10-22">
        <name>next-hop</name>
        <description>The next-hop parameter's value is a String or Token that
          identifies the intermediary or origin server selected (and used, if
          contacted) to obtain this response.  It might be a hostname, IP
          address, or alias.</description>
        <xref type="rfc" data="rfc9209"/>
      </record>
      <record date="2021-10-22">
        <name>next-protocol</name>
        <description>The next-protocol parameter's value indicates the Application-Layer
          Protocol Negotiation (ALPN) protocol identifier <xref type="rfc" data="rfc7301"/> 
          of the protocol used by the intermediary to connect to the next hop when obtaining 
          this response.</description>
        <xref type="rfc" data="rfc9209"/>
      </record>
      <record date="2021-10-22">
        <name>received-status</name>
        <description>The received-status parameter's value indicates the HTTP status code
          that the intermediary received from the next-hop server when
          obtaining this response.</description>
        <xref type="rfc" data="rfc9209"/>
      </record>
      <record date="2021-10-22">
        <name>details</name>
        <description>The details parameter's value is a String containing additional
          information not captured anywhere else.  This can include
          implementation-specific or deployment-specific information.</description>
        <xref type="rfc" data="rfc9209"/>
      </record>
      <record date="2023-12-13">
        <name>next-hop-aliases</name>
        <description>A string containing one or more DNS aliases or
          canonical names used to establish a proxied connection to the next
          hop.</description>
        <xref type="rfc" data="rfc9532"/>
      </record>
    </registry>

  <registry id="http-proxy-error-types">
    <title>HTTP Proxy Error Types</title>
    <xref type="rfc" data="rfc9209"/>
    <registration_rule>Expert Review</registration_rule>
    <expert>Mark Nottingham</expert>
    <note>New Proxy-Status parameters and proxy error types, along with changes 
to existing ones, can be requested using the <xref type="uri" data="https://github.com/protocol-registries/proxy-status">registry interface</xref> or 
the ietf-http-wg@w3.org mailing list.
    </note>
      <record date="2021-10-22">
        <name>dns_timeout</name>
        <description>The intermediary encountered a timeout when trying to find 
          an IP address for the next-hop hostname.</description>
        <extra>None</extra>
        <code>504</code>
        <response>true</response>
        <xref type="rfc" data="rfc9209"/>
      </record>
      <record date="2021-10-22" updated="2023-09-26">
        <name>dns_error</name>
        <description>The intermediary encountered a DNS error when trying to 
        find an IP address for the next-hop hostname.</description>
        <extra>
        <paragraph>
        -  rcode: A String conveying the DNS RCODE that indicates the
        error type.  See <xref type="rfc" data="rfc9499"/>, Section 3.
        </paragraph>
        <paragraph>
        -  info-code: An Integer conveying the Extended DNS Error Code INFO-CODE.  
        See <xref type="rfc" data="rfc8914"/>.
        </paragraph>
        </extra>
        <code>502</code>
        <response>true</response>
        <xref type="rfc" data="rfc9209"/>
      </record>
      <record date="2021-10-22">
        <name>destination_not_found</name>
        <description>The intermediary cannot determine the appropriate next 
        hop to use for this request; for example, it may not be
        configured.  Note that this error is specific to gateways, which
        typically require specific configuration to identify the "backend"
        server; forward proxies use in-band information to identify the
        origin server.</description>
        <extra>None</extra>
        <code>500</code>
        <response>true</response>
        <xref type="rfc" data="rfc9209"/>
      </record>
      <record date="2021-10-22">
        <name>destination_unavailable</name>
        <description>The intermediary considers the next hop to be unavailable; e.g., recent attempts to communicate with it may have
        failed, or a health check may indicate that it is down.</description>
        <extra>None</extra>
        <code>503</code>
        <response>true</response>
        <xref type="rfc" data="rfc9209"/>
      </record>
      <record date="2021-10-22">
        <name>destination_ip_prohibited</name>
        <description>The intermediary is configured to prohibit connections to the next-hop IP address.</description>
        <extra>None</extra>
        <code>502</code>
        <response>true</response>
        <xref type="rfc" data="rfc9209"/>
      </record>
      <record date="2021-10-22">
        <name>destination_ip_unroutable</name>
        <description>The intermediary cannot find a route to the next-hop IP address.</description>
        <extra>None</extra>
        <code>502</code>
        <response>true</response>
        <xref type="rfc" data="rfc9209"/>
      </record>
      <record date="2021-10-22">
        <name>connection_refused</name>
        <description>The intermediary's connection to the next hop was refused.</description>
        <extra>None</extra>
        <code>502</code>
        <response>true</response>
        <xref type="rfc" data="rfc9209"/>
      </record>
      <record date="2021-10-22">
        <name>connection_terminated</name>
        <description>The intermediary's connection to the next hop was closed before a complete response was received.</description>
        <extra>None</extra>
        <code>502</code>
        <response>false</response>
        <xref type="rfc" data="rfc9209"/>
      </record>
      <record date="2021-10-22">
        <name>connection_timeout</name>
        <description>The intermediary's attempt to open a connection to the next hop timed out.</description>
        <extra>None</extra>
        <code>504</code>
        <response>true</response>
        <xref type="rfc" data="rfc9209"/>
      </record>
      <record date="2021-10-22">
        <name>connection_read_timeout</name>
        <description>The intermediary was expecting data on a connection (e.g., part of a response) but did not receive any new data in a
       configured time limit.</description>
        <extra>None</extra>
        <code>504</code>
        <response>false</response>
        <xref type="rfc" data="rfc9209"/>
      </record>
      <record date="2021-10-22">
        <name>connection_write_timeout</name>
        <description>The intermediary was attempting to write data to a connection but was not able to (e.g., because its buffers were
       full).</description>
        <extra>None</extra>
        <code>504</code>
        <response>false</response>
        <xref type="rfc" data="rfc9209"/>
      </record>
      <record date="2021-10-22">
        <name>connection_limit_reached</name>
        <description>The intermediary is configured to limit the number of connections it has to the next hop, and that limit has been
          exceeded.</description>
        <extra>None</extra>
        <code>503</code>
        <response>true</response>
        <xref type="rfc" data="rfc9209"/>
      </record>
      <record date="2021-10-22">
        <name>tls_protocol_error</name>
        <description>The intermediary encountered a TLS error when communicating with the next hop, either during the handshake or
       afterwards.</description>
        <extra>None</extra>
        <code>502</code>
        <response>false</response>
        <xref type="rfc" data="rfc9209"/>
        <notes>Not appropriate when a TLS alert is received; see
          tls_alert_received.</notes>
      </record>
      <record date="2021-10-22">
        <name>tls_certificate_error</name>
        <description>The intermediary encountered an error when verifying the certificate presented by the next hop.</description>
        <extra>None</extra>
        <code>502</code>
        <response>true</response>
        <xref type="rfc" data="rfc9209"/>
      </record>
      <record date="2021-10-22" updated="2025-08-12">
        <name>tls_alert_received</name>
        <description>The intermediary received a TLS alert from the next hop.</description>
        <extra>
        <paragraph>
          -  alert-id: An Integer containing the applicable value from
       the <xref type="uri" data="https://www.iana.org/assignments/tls-parameters">TLS Alerts registry</xref>.  See <xref type="draft" data="RFC-ietf-tls-rfc8446bis-13"/>.
        </paragraph>
        <paragraph>
       -  alert-message: A Token or String containing the applicable 
       description string from the <xref type="uri" data="https://www.iana.org/assignments/tls-parameters">TLS Alerts registry</xref>.
       See <xref type="draft" data="RFC-ietf-tls-rfc8446bis-13"/>.
        </paragraph>
        </extra>
        <code>502</code>
        <response>false</response>
        <xref type="rfc" data="rfc9209"/>
      </record>
      <record date="2021-10-22">
        <name>http_request_error</name>
        <description>The intermediary is generating a client (4xx) response on the origin's behalf.  Applicable status codes include
       (but are not limited to) 400, 403, 405, 406, 408, 411, 413, 414,
       415, 416, 417, and 429.</description>
        <extra>
        <paragraph>
            -  status-code: An Integer containing the generated status
       code.
        </paragraph>
        <paragraph>
       -  status-phrase: A String containing the generated status
       phrase.
        </paragraph>
        </extra>
        <code>The applicable 4xx status code</code>
        <response>true</response>
        <xref type="rfc" data="rfc9209"/>
        <notes>This type helps distinguish between responses generated by
          intermediaries from those generated by the origin.</notes>
      </record>
      <record date="2021-10-22">
        <name>http_request_denied</name>
        <description>The intermediary rejected the HTTP request based on its configuration and/or policy settings.  The request wasn't
       forwarded to the next hop.</description>
        <extra>None</extra>
        <code>403</code>
        <response>true</response>
        <xref type="rfc" data="rfc9209"/>
      </record>
      <record date="2021-10-22">
        <name>http_response_incomplete</name>
        <description>The intermediary received an incomplete response to the request from the next hop.</description>
        <extra>None</extra>
        <code>502</code>
        <response>false</response>
        <xref type="rfc" data="rfc9209"/>
      </record>
      <record date="2021-10-22">
        <name>http_response_header_section_size</name>
        <description>The intermediary received a response to the request whose header section was considered too large.</description>
        <extra>- header-section-size: An Integer indicating how large the received 
       headers were.  Note that they might not be complete;
       i.e., the intermediary may have discarded or refused additional
       data.</extra>
        <code>502</code>
        <response>false</response>
      <xref type="rfc" data="rfc9209"/>
      </record>
      <record date="2021-10-22">
        <name>http_response_header_size</name>
        <description>The intermediary received a response to the request containing an individual header field line that was considered too
       large.</description>
        <extra>
        <paragraph>
        -  header-name: A String indicating the name of the header
       field that triggered the error.
       </paragraph>
       <paragraph>
       -  header-size: An Integer indicating the size of the header
       field that triggered the error.
        </paragraph>
        </extra>
        <code>502</code>
        <response>false</response>
        <xref type="rfc" data="rfc9209"/>
      </record>
      <record date="2021-10-22">
        <name>http_response_body_size</name>
        <description>The intermediary received a response to the request whose body was considered too large.</description>
        <extra>-  body-size: An Integer indicating how large the received body was.  
       Note that it may not have been complete; i.e., the
       intermediary may have discarded or refused additional data.</extra>
        <code>502</code>
        <response>false</response>
        <xref type="rfc" data="rfc9209"/>
      </record>
      <record date="2021-10-22">
        <name>http_response_trailer_section_size</name>
        <description>The intermediary received a response to the request whose trailer section was considered too large.</description>
        <extra>-  trailer-section-size: An Integer indicating how large the 
       received trailers were.  Note that they might not be complete;
       i.e., the intermediary may have discarded or refused additional
       data.</extra>
        <code>502</code>
        <response>false</response>
        <xref type="rfc" data="rfc9209"/>
      </record>
      <record date="2021-10-22">
        <name>http_response_trailer_size</name>
        <description>The intermediary received a response to the request containing an individual trailer field line that was considered
       too large.</description>
        <extra>
        <paragraph>
          -  trailer-name: A String indicating the name of the trailer
       field that triggered the error.
      </paragraph>
       <paragraph>
       -  trailer-size: An Integer indicating the size of the trailer
       field that triggered the error.
        </paragraph>
        </extra>
        <code>502</code>
        <response>false</response>
        <xref type="rfc" data="rfc9209"/>
      </record>
      <record date="2021-10-22">
        <name>http_response_transfer_coding</name>
        <description>The intermediary encountered an error decoding the transfer coding of the response.</description>
        <extra>- coding: A Token containing the specific coding (from the
       <xref type="uri" data="https://www.iana.org/assignments/http-parameters">HTTP Transfer Coding Registry</xref>) that caused the error.</extra>
        <code>502</code>
        <response>false</response>
        <xref type="rfc" data="rfc9209"/>
      </record>
      <record date="2021-10-22">
        <name>http_response_content_coding</name>
        <description>The intermediary encountered an error decoding the content coding of the response.</description>
        <extra>-  coding: A Token containing the specific coding (from the
          <xref type="uri" data="https://www.iana.org/assignments/http-parameters">HTTP Content Coding Registry</xref>) that caused the error.</extra>
        <code>502</code>
        <response>false</response>
      <xref type="rfc" data="rfc9209"/>
      </record>
      <record date="2021-10-22">
        <name>http_response_timeout</name>
        <description>The intermediary reached a configured time limit waiting for the complete response.</description>
        <extra>None</extra>
        <code>504</code>
        <response>false</response>
        <xref type="rfc" data="rfc9209"/>
      </record>
      <record date="2021-10-22">
        <name>http_upgrade_failed</name>
        <description>The process of negotiating an upgrade of the HTTP version between the intermediary and the 
       next hop failed.</description>
        <extra>None</extra>
        <code>502</code>
        <response>true</response>
        <xref type="rfc" data="rfc9209"/>
      </record>
      <record date="2021-10-22">
        <name>http_protocol_error</name>
        <description>The intermediary encountered an HTTP protocol error when communicating with the next hop.  This error should only be
       used when a more specific one is not defined.</description>
        <extra>None</extra>
        <code>502</code>
        <response>false</response>
        <xref type="rfc" data="rfc9209"/>
      </record>
      <record date="2021-10-22">
        <name>proxy_internal_response</name>
        <description>The intermediary generated the response itself without attempting to connect to the next hop.</description>
        <extra>None</extra>
        <code>The most appropriate status code for the response</code>
        <response>true</response>
      <xref type="rfc" data="rfc9209"/>
      </record>
      <record date="2021-10-22">
        <name>proxy_internal_error</name>
        <description>The intermediary encountered an internal error unrelated to the origin.</description>
        <extra>None</extra>
        <code>500</code>
        <response>true</response>
      <xref type="rfc" data="rfc9209"/>
      </record>
      <record date="2021-10-22">
        <name>proxy_configuration_error</name>
        <description>The intermediary encountered an error regarding its configuration.</description>
        <extra>None</extra>
        <code>500</code>
        <response>true</response>
        <xref type="rfc" data="rfc9209"/>
      </record>
      <record date="2021-10-22">
          <name>proxy_loop_detected</name>
        <description>The intermediary tried to forward the request to itself, or a loop has been detected using different means (e.g.,
        <xref type="rfc" data="rfc8586"/>).</description>
        <extra>None</extra>
        <code>502</code>
        <response>true</response>
        <xref type="rfc" data="rfc9209"/>
      </record>   
      <record date="2026-03-06">
        <name>incremental_refused</name>
        <description>The HTTP message contained the Incremental HTTP header field, but the intermediary refused to forward the message incrementally.</description>
        <extra>None</extra>
        <code>501</code>
        <response>true</response>
        <xref type="draft" data="RFC-ietf-httpbis-incremental-04"/>
      </record>
  </registry>

  <people/>
</registry>
