동일한 포트에 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