Tengo una instalación de Apache/2.4.6 que funciona como proxy inverso para algunas aplicaciones. Ahora tengo que configurar otro. El proxy HTTP funciona muy bien, pero en algunas secciones de la página web, el cliente intenta iniciar una conexión websocket.
El problema es que la URL está parcialmente compartida:
Solicitud HTTP:http://domain/context/[whatever]
Solicitud de WS:ws://domain/context/specific-text?param1¶m2
No se puede usar If
(verificando el protocolo) ya que ProxyPass no puede ingresar <If>
.
Configuración probada:
<Location /context/specific-text>
ProxyPass ws://internal.domain/context/specific-text
Antes
<Location /context/>
ProxyPass http://internal.domain/context/
Pero no funciona, supongo que debido a la barra diagonal (inexistente).
Más datos:
- El socket se queja de que no le gusta el código "200", Apache no devuelve una conexión ws pero, hasta algún punto, se está realizando el proxy.
- Probado con y sin
<Location>
- Pensé en reescribir
specific-text
perospecific-text/
no me gusta manipular cosas que no manejo. La aplicación es un producto pago, no puedo preguntar si dañaría algo. Bueno, podría, pero no esperaría ninguna respuesta.
Respuesta1
Lo que me funciona es este fragmento de configuración de ProxyPass:
ProxyPass /specific wss://0.0.0.0:4000/specific
ProxyPassReverse /specific wss://0.0.0.0:4000/specific
ProxyPass / https://0.0.0.0:4000/
ProxyPassReverse / https://0.0.0.0:4000/
Solicitar directivas ProxyPass
Las reglas ProxyPass y ProxyPassMatch configuradas se verifican en el orden de configuración. La primera regla que coincida gana.