したがって、質問で説明されているように、HTTP サーバーと HTTPS サーバーの両方をホストする node.js アプリケーションがあるとします: 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 Web サイト、Heroku、Nodejitsu などのクラウド ホスト プロバイダーにサイトを公開したいと考えています。
すべてのクラウド ホストがprocess.env.PORT
値を設定しているように見えますが、1 つだけです。HTTPS サーバーが作成されると、PORT が既に使用されている/アクセスが拒否されている/などの理由で、通常はアプリがクラッシュします。
では、1 つのポートのみで動作する安全なログイン ページでサイトを作成/ホストするにはどうすればよいでしょうか!?