2013-11-27 4 views
0

Express 서버는 nodejs에 있습니다. 이제이 서버에 SSL support을 추가하려고합니다.Nodejs SSL for SockJS + Express

var sockjs = require('sockjs'); 
var my_http = require("http"); 
var https = require('https'); 
var fs = require('fs'); 


var options = { 
    key: fs.readFileSync('test/keys/key.pem'), 
    cert: fs.readFileSync('test/keys/cert.pem') 
}; 

// Create a service (the app object is just a callback). 
var app = express(); 

// Create an HTTP service. 
http.createServer(app).listen(8008); 
// Create an HTTPS service identical to the HTTP service. 
https.createServer(options, app).listen(443); 


var echo = sockjs.createServer({ 
    log: function (severity, message) {} 
}); 
echo.on('connection', function (conn) { 

    conn.on('data', function (message) { 
     conn.write(message); 
    }); 

    conn.on('close', function() { 

    }); 
}); 

var server = my_http.createServer(); 
echo.installHandlers(server, { 
    prefix: '/echo' 
}); 
server.listen(8081, '0.0.0.0'); 

var server_https = my_http.createServer(options); 
echo.installHandlers(server_https, { 
    prefix: '/echo' 
}); 
server_https.listen(443, '0.0.0.0'); 



app.get('/type/:channel', function (req, res) { 
    res.setHeader('Content-Type', 'application/json'); 
    res.send("Hello"); 

    res.end(); 
}); 

문제는 내가 port already in use error를 얻을 수 있다는 것입니다 :

여기 내 서버 코드

내가 그렇지 않으면 내 사이트가 SSL을 작동하지 않을 것입니다 (443)에서 수신 Nginx에있어
Error: listen EADDRINUSE 

.

아이디어를 설정하는 방법은 무엇입니까?

답변

0

당신의 nginx 설정 안에 '업스트림'포트가 있어야합니다. 귀하의 경우 아마도 서버 아래에 동일한 포트가 나열되어있을 것입니다. 그것은 당신이 그것을 할 때 오류를 보여줍니다. 적절한 구성은 아래를 참조하십시오 ("수신 대기 80"에서 "수신 대기 8000"으로 변경하면 오류가 표시됨) :

upstream app_yourAppName { 
     server 127.0.0.1:8000; 
    } 

    # the nginx server instance 
    server { 
     listen 80; 
     ... 
     ... 
    }