포트를 지정하지 않고 웹소켓 서버에 연결

포트를 지정하지 않고 웹소켓 서버에 연결

동일한 포트에 websocket 서버 없이 보안 node.js 서버를 만들려고 합니다. 포트는 8080입니다.

브라우저에서 URL에 액세스할 수 있고 포트를 지정하면 웹소켓에 연결할 수 있습니다.

https://ws.site.com// 작동함
wss://ws.site.com // 작동하지 않음
wss://ws.site.com:8080 // 작동함

왜 이런거야? 내가 도대체 ​​뭘 잘못하고있는 겁니까? nginx 설정입니다

upstream ws.site.com {
    server 127.0.0.1:8080;
}

server {
    listen 443;
    server_name ws.site.com;

    ssl on;
    ssl_certificate /path/ssl-bundle.crt;
    ssl_certificate_key /path/myserver.key;
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;

    location / {
            access_log off;

            proxy_pass https://ws.site.com;
            proxy_redirect off;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header Host $host;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_read_timeout 86400;

            proxy_http_version 1.1;
            proxy_set_header Upgrade $http_upgrade;
            proxy_set_header Connection "upgrade";
    }
}

답변1

URL wss://핸들러는WebSocket의 기본 포트, 포트 접미사를 직접 추가하지 않으면 443입니다. 기본값이 아닌 것(8080)에서 실행하는 경우 포트 접미사가 필요합니다.

답변2

문제는 설정에 있습니다.

업스트림이 포트 8080에서 실행 중입니다.

upstream ws.site.com {
    server 127.0.0.1:8080;
}

그리고 https(443) 포트를 살펴보라고 말하고 있습니다.

proxy_pass https://ws.site.com;
proxy_redirect off;

그것을 고치다http://ws.site.com

단순 포트 테이블:

  • 포트 80: http, ws
  • 포트 443: https, wss

관련 정보