maybe we can duplicate that in the "basic examples" at the top of the page?

On Fri, Jan 27, 2023 at 10:31 AM <yla...@apache.org> wrote:
>
> Author: ylavic
> Date: Fri Jan 27 15:30:46 2023
> New Revision: 1907031
>
> URL: http://svn.apache.org/viewvc?rev=1907031&view=rev
> Log:
> docs: Better mod_proxy_wstunnel vs mod_proxy_http upgrade= documentation.
>
> [skip ci]
>
> Modified:
>     httpd/httpd/trunk/docs/manual/mod/mod_proxy.xml
>
> Modified: httpd/httpd/trunk/docs/manual/mod/mod_proxy.xml
> URL: 
> http://svn.apache.org/viewvc/httpd/httpd/trunk/docs/manual/mod/mod_proxy.xml?rev=1907031&r1=1907030&r2=1907031&view=diff
> ==============================================================================
> --- httpd/httpd/trunk/docs/manual/mod/mod_proxy.xml (original)
> +++ httpd/httpd/trunk/docs/manual/mod/mod_proxy.xml Fri Jan 27 15:30:46 2023
> @@ -1275,10 +1275,13 @@ ProxyPass "/example" "http://backend.exa
>          <td><p>Value of secret used by <module>mod_proxy_ajp</module>.
>          See the documentation of this module for more details.</p>
>      </td></tr>
> -    <tr><td>upgrade</td>
> +    <tr><td><a id="upgrade" name="upgrade">upgrade</a></td>
>          <td>WebSocket</td>
> -        <td><p>Protocol accepted in the Upgrade header by 
> <module>mod_proxy_wstunnel</module>.
> -        See the documentation of this module for more details.</p>
> +        <td><p>Protocol accepted by <module>mod_proxy_http</module> or
> +        <module>mod_proxy_wstunnel</module> for the HTTP Upgrade mechanism
> +        upon negotiation by the HTTP client/browser (per
> +        <a href="https://www.ietf.org/rfc/rfc9110.html#name-upgrade";>RFC 
> 9110 - Upgrade</a>).
> +        See the <a href="#protoupgrade">Protocol Upgrade</a> note below</p>
>      </td></tr>
>      <tr><td>mapping</td>
>          <td>-</td>
> @@ -1500,6 +1503,29 @@ RewriteRule ^/mirror/foo/(.*) %{ENV:prot
>  ProxyPassReverse  "/mirror/foo/" "http://backend.example.com/";
>  ProxyPassReverse  "/mirror/foo/" "https://backend.example.com/";
>      </highlight>
> +
> +    <note><title><a id="protoupgrade" name="protoupgrade">Protocol 
> Upgrade</a></title>
> +        <p>Since Apache HTTP Server 2.4.47, protocol Upgrade (tunneling) can 
> be handled
> +        end-to-end by <module>mod_proxy_http</module> using the 
> <directive>ProxyPass</directive>
> +        parameter <var><a href="#upgrade">upgrade</a></var>.</p>
> +        <p>End-to-end means that the HTTP Upgrade request from the 
> client/browser is first
> +        forwarded by <module>mod_proxy_http</module> to the origin server 
> and the connection
> +        will be upgraded (and tunneled by <module>mod_proxy_http</module>) 
> only if the origin
> +        server accepts/initiates the upgrade (HTTP response <code>101 
> Switching Protocols</code>).
> +        If the origin server responds with anything else 
> <module>mod_proxy_http</module>
> +        will continue forwarding (and enforcing) the HTTP protocol as usual 
> for this
> +        connection.</p>
> +        <example><title>Example</title>
> +        <highlight language="config">
> +ProxyPass "/some/http/or/ws/path/" 
> "http://example.com/some/http/or/ws/path/"; upgrade=websocket
> +        </highlight>
> +        </example>
> +        <p>For Apache HTTP Server 2.4.46 and earlier (or if
> +        <directive 
> module="mod_proxy_wstunnel">ProxyWebsocketFallbackToProxyHttp</directive>
> +        from 2.4.48 and later disables <module>mod_proxy_http</module> 
> handling), see the
> +        documentation of <module>mod_proxy_wstunnel</module> for how to 
> proxy the WebSocket
> +        protocol.</p>
> +    </note>
>  </usage>
>  </directivesynopsis>
>
>
>


-- 
Eric Covener
cove...@gmail.com

Reply via email to