Não é possível obter conexão websocket ao trabalhar com o balanceador de carga de aplicativos ec2 +

1

Eu tenho um balanceador de carga de aplicativo aws com um ouvinte https na porta 9999, encaminhando para um grupo na porta 9999 com uma instância ec2 sendo o destino.

Se eu executar meu servidor websocket com o nome do host configurado para meu domínio api.example.com , quando o cliente tentar abrir uma conexão websocket, ele será:

Error during WebSocket handshake: Unexpected response code: 502

No entanto, se eu configuro meu servidor websocket com uma string vazia em vez do domínio, ele conecta muito bem !

Isso é problemático porque o servidor que pretendo executar nesta instância inicia automaticamente um servidor de soquete da Web APENAS SE existe uma configuração de nome de host de websocket fornecida, portanto, uma cadeia em branco significa que o servidor websocket nunca lançamento! Eu preferiria não ter que hackear a biblioteca para contornar essa condição. Então, eu estou querendo saber, porque no mundo uma string em branco funciona, mas o nome do domínio não?

Eu tentei localhost, o ip da caixa, etc, tudo resulta em um 502, exceto uma string em branco!

    
por patrick 27.06.2018 / 06:37

2 respostas

0

Meu problema foi resolvido configurando meu host do servidor websocket como 0.0.0.0

    
por 03.07.2018 / 02:39
0

O ALB não usa um nome de host para a verificação de integridade. Portanto, se o seu servidor não suportar solicitações sem nomes de host, a verificação de integridade falhará, resultando em 5xx erros ao acessar o ALB.

  • Verifique o grupo-alvo que o ALB está usando para erros de verificação de integridade
  • Verifique se os logs do servidor de aplicativos estão relacionados a erros relacionados à verificação de integridade

Se o seu servidor não suportar isso, você tem duas opções:

  • Use um proxy (por exemplo, nginx) em seu servidor que possa manipular solicitações sem o nome do host e lide com o problema
  • Substitua a porta de verificação de integridade do ALB, redirecionando-a para algo que retorne HTTP 200 o tempo todo (por exemplo, um Apache em execução no mesmo host, mas em outra porta).
por 27.06.2018 / 10:52