1

AWS Elastic Beanstalk에서 socket.io node.js 응용 프로그램을 실행 중입니다. 나는 express.js를 포함하지 않았다.AWS Elastic Beanstalk을 구성하는 주요 문제 socket.io 연결을 사용하는 Nginx

분명히 Elastic Beanstalk의 Nginx 프록시는 수동 구성없이 TCP 연결을 통과하지 못합니다.

Android 클라이언트 또는 브라우저를 통해 연결하려고합니다.

저는 인터넷에서 모든 솔루션을 시도했지만 502 잘못된 게이트웨이 또는 시간 초과 오류가 발생합니다.

HTTP가 아닌 TCP를 허용하도록 AWS Elastic Beanstalk로드 밸런서를 변경해야합니까?

내 node.js 앱이 포트 3000에서 수신 대기합니다 (하드 코드 됨). localhost에서 훌륭하게 작동합니다. 여기

var server = require('http').createServer(handleRequest); 
var io = require('socket.io')(server); 

function handleRequest(request, response) 
{ 
    response.end('It Works!! Path Hit: ' + request.url); 
} 

io.on('connection', function (socket) 
{ 
    console.log('a user connected'); 

    socket.on('disconnect', function() 
    { 
     console.log('user disconnected'); 
    }); 

    socket.on('chat message', function (msg) 
    { 
     console.log('message received on server: ' + msg); 

     io.emit('chat message', msg); 
    }); 
}); 

server.listen(3000, function() 
{ 
    console.log("Server listening on port:", 3000); //Callback triggered when server is successfully listening. Hurray! 
}); 

여기
{ 
    "name": "qurba-messaging-backend", 
    "version": "0.0.1", 
    "scripts": { 
    "start": "node main.js" 
    }, 
    "dependencies": { 
    "socket.io": "^1.4.6" 
    } 
} 

내 nginx를 구성 https://gist.github.com/RobinBuschmann/c42a413ecedee463e5bd8e613ddd8d04

files: 
    "/etc/nginx/conf.d/01_websockets.conf": 
    mode: "000644" 
    owner: root 
    group: root 
    content: | 
     upstream nodejs { 
     ip_hash; 
     server 127.0.0.1:3000; 
     keepalive 256; 
     } 

     server { 
     listen 80; 

     location/{ 
      proxy_pass http://nodejs; 
      proxy_set_header Upgrade $http_upgrade; 
      proxy_set_header Connection "upgrade"; 
      proxy_http_version 1.1; 
      proxy_set_header Host $host; 
      proxy_set_header X-Real-IP $remote_addr; 
      proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 
     } 
     } 
    "/opt/elasticbeanstalk/hooks/appdeploy/enact/41_remove_eb_nginx_confg.sh": 
    mode: "000755" 
    owner: root 
    group: root 
    content : | 
     mv /etc/nginx/conf.d/00_elastic_beanstalk_proxy.conf /etc/nginx/conf.d/00_elastic_beanstalk_proxy.conf.old 
내 package.json입니다

답변

관련 문제