2014-04-03 58 views
0

在開發過程中,我想啓動兩個使用http和https模塊的server.js(app.js)腳本實例,一個路由重定向(*) https並運行說端口3000一個實例和另一端口3001。現在,如果我執行端口80到端口443我沒有任何問題,但必須使用sudo啓動腳本,我只能有一個實例。有沒有一種方法可以將http重定向到同一端口上的https。將Express.js HTTP重定向到同一端口上的HTTPS

application.get('*', function(request, response, next) { 
    if (!request.secure) { 
     response.redirect('https://' + request.headers.host + request.url); 
    } else { 
     next(); 
    } 
}); 

http 
    .createServer(application) 
    .listen(80, function() { 
     var uid = parseInt(process.env.SUDO_UID); 
     if (uid) { 
      process.setuid(uid); 
     } 
    }); 
https 
    .createServer({ 
     key: fs.readFileSync(...), 
     cert: fs.readFileSync(...) 
    }, application) 
    .listen(443, function() { 
     var uid = parseInt(process.env.SUDO_UID); 
     if (uid) { 
      process.setuid(uid); 
     } 
     console.log(
      'Express server running in %s environment at %s', 
      process.env.NODE_ENV || 'development', 
      moment() 
     ); 
    }); 
+1

您不能在同一端口上運行兩個不同的服務器... – Qualcuno

回答

1

只需將您的端口保存在ENV變量中,然後使用它來偵聽和重定向方法。