# Apache Proxy

Instead of using xpra's builtin proxy server, the apache http server can be configured as a single point of entry, on a single port.
Just like xpra's proxy, the apache proxy can provide multiple sessions, potentially on multiple remote backend servers.

This works well with both the html5 client and the regular xpra client with `ws://` and `wss://` URLs.

## Example Configuration

    cat > /etc/httpd/conf.modules.d/20-proxy.conf << EOF
    <Location "/xpra1">
      RewriteEngine on
      RewriteCond %{HTTP:UPGRADE} ^WebSocket$ [NC]
      RewriteCond %{HTTP:CONNECTION} ^Upgrade$ [NC]
      RewriteRule .* ws://localhost:20001/%{REQUEST_URI} [P]
      ProxyPass ws://localhost:20001
      ProxyPassReverse ws://localhost:20001
    </Location>

    <Location "/xpra2">
      RewriteEngine on
      RewriteCond %{HTTP:UPGRADE} ^WebSocket$ [NC]
      RewriteCond %{HTTP:CONNECTION} ^Upgrade$ [NC]
      RewriteRule .* ws://localhost:20002/%{REQUEST_URI} [P]
      ProxyPass ws://localhost:20002
      ProxyPassReverse ws://localhost:20002
    </Location>
    EOF

## Usage

Start the xpra servers defined in the apache configuration above:

    xpra seamless --bind-tcp=0.0.0.0:20001 --start=xterm
    xpra seamless --bind-tcp=0.0.0.0:20002 --start=xterm

(beware: authentication is turned off for simplicity)

Then you can simply open your browser at these locations (`/xpra1` and `/xpra2` in the example config):

    xdg-open http://localhost/xpra1/

Or using the regular command line client using a websocket connection:

    xpra attach ws://localhost/xpra1/
    xpra attach ws://localhost/xpra2/