Eu tenho uma instalação do Apache/2.4.6 funcionando como proxy reverso para alguns aplicativos. Agora tenho que configurar outro. O proxy HTTP está funcionando muito bem, mas em algumas seções da página da web, o cliente tenta iniciar uma conexão de websocket.
O problema é que o URL é parcialmente compartilhado:
Solicitação HTTP:http://domain/context/[whatever]
Solicitação de WS:ws://domain/context/specific-text?param1¶m2
Não é possível usar If
(verificar o protocolo) porque o ProxyPass não pode entrar <If>
.
Configuração tentada:
<Location /context/specific-text>
ProxyPass ws://internal.domain/context/specific-text
Antes
<Location /context/>
ProxyPass http://internal.domain/context/
Mas não funciona, acho que por causa da barra final (inexistente).
Mais dados:
- O soquete está reclamando de não gostar de um código "200", o Apache não está retornando uma conexão ws mas, até certo ponto, o proxy está sendo feito.
- Tentei com e sem
<Location>
- Pensei em reescrever
specific-text
,specific-text/
mas não gosto de manipular coisas que não consigo. O aplicativo é um produto pago, não posso perguntar se prejudicaria alguma coisa. Bem, eu poderia, só não esperaria nenhuma resposta.
Responder1
O que funciona para mim é este snippet de configuração do 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/
Solicitando diretivas ProxyPass
As regras ProxyPass e ProxyPassMatch configuradas são verificadas na ordem de configuração. A primeira regra que corresponder vence.