wss não funciona em https mas ws funciona em http apache2 ubuntu

1

Minha configuração do websocket funciona em http. Mas se eu habilitar o SSL (permite criptografar) e alterar o ws:// para wss:// , o navegador exibe este erro.

WebSocket connection to 'wss://xx.yy.xx.yy:5001/' failed: Error in connection establishment: net::ERR_CONNECTION_CLOSED

Javascript:

var ws = new WebSocket('wss://xx.yy.xx.yy:5001');

Eu, então, ativei esses módulos do apache: proxy_http , proxy_wstunnel , proxy_balancer

E adicionamos essas linhas em /etc/apache2/sites-enabled/000-default-le-ssl.conf

<IfModule mod_proxy.c>
ProxyPass / ws://xx.yy.xx.yy:5001
ProxyPassReverse / ws://xx.yy.xx.yy:5001
</IfModule>

Tem um erro de 500 servidores.

Apesar de eu não ter ideia de como funciona essa coisa do proxy, apenas uma tentativa cega. Por favor, corrija meu erro, ajude-me a consertar isso. Obrigado.

Detalhes do servidor:

  • Apache 2.4.18 em execução na instância do AWS EC2 ubuntu.
  • ip público: xx.yy.xx.yy
  • ip privado: aa.bb.aa.bb

Configuração do Websocket:

Eu uso ip privado para conexão de back-end (php) e ip público no front-end.

    
por krk 21.06.2018 / 17:40

1 resposta

2

Bem, eu consertei sozinho. Eu mudei meu javascript para:

var ws = new WebSocket('wss://domain.com/ws/');

Ativou os módulos proxy executando o seguinte comando no terminal

sudo a2enmod proxy proxy_balancer proxy_wstunnel proxy_http

Adicionadas estas linhas no meu arquivo de configuração virtualhost do Apache ( /etc/apache2/sites-enabled/000-default-le-ssl.conf )

ProxyRequests Off
ProxyPass "/ws/"  "ws://domain.com:5001/"

Serviço de apache reiniciado. E o websocket começou a trabalhar em https.

    
por 22.06.2018 / 14:44