I’m looking into using HAProxy to provide a layer 7 reverse proxy for HTTP/HTTPS connections. Along with standard HTTP requests, one of my requirements is to support the reverse proxy of RTSP over HTTP streams to backend servers. A summary of the spec can be found here
To briefly summarize the spec, the client tries to establish a full duplex connection using a GET and POST request to the server. The initial GET and POST requests follow the HTTP spec but subsequent data sent through the connections is raw Base64 encoded (no HTTP headers).
I have tried a few configurations but so far I haven’t been able to find something suitable. In http mode, HAProxy doesn’t seem to handle the RTSP over HTTP protocol very well. Tcp mode works, but I lose the ability to do URL dispatching to backend servers for normal HTTP requests. It also isn’t possible to have a http mode front end that then connects to a tcp mode backend. I also explored the http-tunnel option in http mode. This somewhat solved the problem, however, I noticed this option has been deprecated and removed in version 2.X.
Does anyone else have any configuration ideas that might work for my use case? The ideal solution for my needs would allow a tcp mode style connection with the backend server if the ‘application/x-rtsp-tunnelled’ header is present on the first request. This is very similar to the ‘http-tunnel’ option. Are there any future plans to support some functionality like this?