Configuração do proxy NGINX para o protocolo ws: //

2

Estou tentando configurar o NGINX para o tráfego de soquete da Web do proxy. Estou executando uma página da web no NGINX (porta 80) que tem um feed MJPEG da porta 8080 e também leva o tráfego de soquete da web pela porta 8090. Eu posso fazer proxy do fluxo MJPEG, mas não dos soquetes da web. Na minha página da Web, o javascript do lado do cliente estava se conectando bem sem o proxy usando esta linha:

var conn = novo WebSocket ('ws: //192.168.0.14: 8989 / ws');

Para fazer proxy, tentei configurar a seguinte configuração do NGINX:

    #Proxy the Web Socket Traffic
    #----------------------------------------------
    location /sock/ {
        proxy_pass ws://localhost:8989/ws;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
    }

    #Proxy the MJPEG Streamer feed
    #----------------------------------------------
    location /mjpeg/ {
            proxy_pass http://localhost:8080/;
    }

Em seguida, alteramos o javascript do lado do cliente para o seguinte:

var conn = novo WebSocket (' link ');

No entanto, quando eu reinicio o NGINX, resulta em:

O trabalho para nginx.service falhou. Veja 'systemctl status nginx.service' e 'journalctl -xn' para detalhes.

Se eu alterar a linha de aprovação do proxy para "proxy_pass link ;" em seguida, o serviço NGINX é reiniciado com êxito, mas eu posso fazer uma conexão de soquete da web mais.

Há mais alguma coisa que eu preciso configurar para que o NGINX faça proxy para os endereços ws: //? É http: // equivalente se está atualizando o protocolo? Se o último é verdadeiro, então por que não funciona?

Eu observei nesta postagem que eles estão usando o ws: // na instrução do proxy pass. Mas não funciona para mim NGINX: Como proxy tráfego http (s) para um servidor e ws (s) tráfego para outro?

    
por user383341 30.10.2016 / 01:19

1 resposta

1

Nenhuma documentação nginx disponível menciona o esquema ws:// como disponível para uso na configuração. Não é de admirar que o nginx não comece, aposto que é o erro de configuração que está sendo reclamado.

E você definitivamente tem a configuração correta para o proxy websockets. Por que não funciona - ainda está por determinar, isso pode ser devido a um grande número de razões: ninguém realmente escuta o tcp / 8989, ou algum erro de aplicação no ouvinte acontece.

    
por 30.10.2016 / 08:43