Parece que você precisa adicionar um proxy reverso entre o seu firewall e seus servidores.
Ao usar o módulo apache websocket , você deve poder encaminhar solicitações de websocket para seus servidores por meio de seu proxy reverso.
Eu perguntei esta questão no Stack Overflow primeiro, mas depois achei que a falha do servidor poderia estar um lugar melhor para postar.
Eu tenho dois servidores WebSocket rodando em portas diferentes de 80 e 443. Esses dois servidores estão rodando atrás de um firewall que só tem as portas 80 e 443 abertas.
WebSocket Server A:800 |
|-----|FireWall:80 & 443|-----> INTERNET
WebSocket Server B:801 |
O que eu estou procurando é uma forma de meus clientes se conectarem aos servidores WebSocket sem saber sua porta e sem eu abrir o firewall para quaisquer outras portas em vez de 80 e 443.
Então, eu estava pensando que talvez um servidor intermediário (ou servidor proxy) entre meus servidores firewall e WebSocket possa ser configurado de maneira que os clientes solicitem www.mywebsite.com/a
na porta 80 ou 443 (para passar o firewall) o servidor intermediário conecta o cliente ao WebSocket Server A. E quando o cliente solicita www.mywebsite.com/b
na porta 80 ou 443, o servidor intermediário o conecta ao WebSocket Server B. Isso é possível? e em caso afirmativo, existe algum servidor que você saiba que tenha esse recurso implementado?
Em uma nota diferente (talvez não muito diferente), quais seriam as diferenças entre o perfurador TCP e a abordagem Eu expliquei acima?
Parece que você precisa adicionar um proxy reverso entre o seu firewall e seus servidores.
Ao usar o módulo apache websocket , você deve poder encaminhar solicitações de websocket para seus servidores por meio de seu proxy reverso.
Eu sugeriria o módulo mod_proxy_wstunnel disponível no Apache 2.4.5 em diante. Ele permite que você retransmita de uma URL para outro servidor de websocket em qualquer porta.
por exemplo. Para tomar o seu exemplo:
ProxyPass /ws1/ ws://websocketserverA:800/
ProxyPass /ws2/ ws://websocketserverB:801/