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?