【问题标题】:node.js hosting with SSL?node.js 使用 SSL 托管?
【发布时间】:2013-02-08 04:57:54
【问题描述】:

假设我有一个同时托管 HTTP 和 HTTPS 服务器的 node.js 应用程序,如问题中所述:How to force SSL / https in Express.js

在我的代码中,我有以下内容:

// 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 已在使用/拒绝访问等。

那么我该如何创建/托管一个只有一个端口可以使用的安全登录页面!?

【问题讨论】:

  • 你是说只能监听一个端口?你想要那个端口上的普通连接和 ssl 连接?
  • @TarandeepGill 我am在代码中监听两个端口,但在 Azure 上我只分配了一个端口,因此第二个 https 服务器创建调用失败。

标签: node.js cloud-hosting


【解决方案1】:

如果您使用 Heroku,则无需在 nodejs 中指定端口即可获得 SSL。您需要做的就是监听 http 请求的 heroku PORT 环境变量。上传到 heroku 后,您可以使用 https(在 443 上)或 http(在端口 80 上)寻址您的 heroku 应用程序。 Heroku 路由到您的服务器。

类似地,如果使用 EC2 的弹性负载平衡,您可以在负载平衡器上使用 SSL 终止,并再次使用 http 路由到侦听端口 80 的节点服务器。 http://aws.amazon.com/elasticloadbalancing

在这两种情况下,您都可以根据需要使用自签名或适当的 SSL 证书。

【讨论】:

  • 啊,所以在 Heroku 上,我的代码中实际上只需要一个 http 服务器,它会同时接收 http 和 https 请求? SSL 证书是如何通过管道传输的?
  • 对于那些想了解 Microsoft Azure 的人来说,同样适用。一台 http 服务器将同时处理 HTTP 和 HTTPS 请求。 :)
猜你喜欢
  • 1970-01-01
  • 2022-07-01
  • 2011-12-16
  • 2014-09-09
  • 1970-01-01
  • 1970-01-01
  • 2018-11-16
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多