
여러 기사를 읽은 후에도 여전히 nginx 프록시를 통해 내 소켓.io 통신이 작동하지 않습니다.
내 nginx
구성은 다음과 같습니다.
map $http_upgrade $connection_upgrade {
default upgrade;
'' close;
}
location ~* \.io {
proxy_pass http://localhost:3000;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
}
node.js
내 Express 서버가 연결된 방법은 다음과 같습니다 .
const express = require('express');
const app = express();
const http = require('http').Server(app);
const io = require('socket.io')(http);
내 로컬 개발 컴퓨터에서는 모든 것이 잘 작동하는 것 같습니다. onConnection 로그 메시지가 표시되고 모든 통신도 잘 작동합니다.
그러나 프로덕션에서는 브라우저가 유효한 응답을 모두 받았지만 onConnection 로그가 표시되지 않고 소켓을 통한 통신이 작동하지 않습니다.
Chrome 네트워크 탭 요청(전체 크기로 이미지를 열려면 클릭)
답변1
프로덕션 서버의 방화벽에 의해 포트 3000이 차단되었을 수 있습니다. 로컬 개발 컴퓨터에서 다음 명령을 실행하여 열려 있는지 확인할 수 있습니다.
telnet <ip-address-of-your-production-server> 3000
그러면 프로덕션 서버에서 포트 3000에 대한 연결을 열려고 시도합니다. 시간 초과되거나 거부되면 포트가 열리지 않습니다.