簡體   English   中英

node.js托管SSL?

[英]node.js hosting with SSL?

所以說我有一個node.js應用程序,它同時托管HTTP和HTTPS服務器,如問題中所述: 如何在Express.js中強制使用SSL / https

在我的代碼中,我有以下內容:

// General configuration settings for production usage
app.configure(function () {
  app.set('port', process.env.PORT || 3000);
  app.set('sslport', process.env.SSLPORT || 4000);
  ...
}

http.createServer(app).listen(app.get('port'), function () {
  winston.info('Express server listening on port ' + app.get('port'));
});

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

https.createServer(options, app).listen(app.get('sslport'), function () {
  winston.info('Express server listening on port ' + app.get('sslport'));
});

這適用於本地運行節點服務器。

但是,我想將我的網站發布到Azure網站,Heroku,Nodejitsu等雲托管提供商。

所有雲主機似乎都設置了process.env.PORT值,但只設置了一個。 當我的HTTPS服務器被創建時,這通常會導致應用程序崩潰,因為PORT已經在使用/訪問被拒絕/等等。

那么如何創建/托管一個只有一個端口的安全登錄頁面的網站呢?

如果您使用Heroku,則無需在nodejs中指定端口即可獲得SSL。 您需要做的就是監聽http請求的heroku PORT環境變量。 上傳到heroku后,您可以使用https(在443上)或http(在端口80上)來解決您的heroku應用。 Heroku路由到您的服務器。

同樣,如果使用EC2彈性負載平衡,您可以在負載均衡器上使用SSL終結,並再次使用http路由到偵聽端口80的節點服務器。 http://aws.amazon.com/elasticloadbalancing

在這兩種情況下,您都可以根據需要使用自簽名或正確的SSL證書。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM