Configurando Proxy Reverso para Websocket no Apache
Em um post anterior mostramos como configurar o Apache como um Proxy Reverso, permitindo publicar sites hospedados em um servidor interno ou em sua DMZ externamente, sem expor diretamente esse servidor para acessos externos.
No entanto, caso a aplicação web hospedada no servidor de backend utilize o protocolo Websocket para manter uma conexão permanente entre cliente e servidor, são necessárias algumas configurações adicionais.
Basicamente, para que o Apache possa fazer corretamente o Proxy desse protocolo, é necessário utilizar o RewriteEngine para que quando seja identificado no cabeçalho HTTP enviado pelo cliente uma solicitação de "Upgrade" para Websocket, seja realizada a reescrita da requisição usando o endereço do servidor backend da aplicação.
RewriteEngine on
RewriteCond %{HTTP:Upgrade} websocket [NC]
RewriteCond %{HTTP:Connection} upgrade [NC]
RewriteRule ^/?(.*) "wss://localhost:8443%{REQUEST_URI}" [P,L]
As condições acima fazem simplesmente identificar no cabeçalho se os campos Upgrade e Connection foram definidos conforme a RFC que define o protocolo Websocket e faz a reescrita da URL da Request, trocando a parte do Host pelo endereço do servidor interno. No caso desse exemplo acima, o servidor de backend está no mesmo Host (localhost) mas em outra porta (8443).
Comentários
Postar um comentário