【问题标题】:SSL port for Azure Web Site using node.js?使用 node.js 的 Azure 网站的 SSL 端口?
【发布时间】:2013-10-07 01:33:13
【问题描述】:

我很难将 node.js 应用程序部署为 Azure 网站以侦听 SSL 的适当端口(在 Azure 环境中)。

在我可以控制端口的任何其他环境中提供 SSL 请求都没有问题并且工作正常。我不认为这是应用代码的问题(使用 Express,仅供参考)。

Azure 网站似乎将端口 80 流量从负载平衡器转发到任何可用端口,该端口在 process.env.PORT 变量中设置。

我在process.env 中没有看到任何与 SSL 流量相关的等效项,尽管已成功将证书加载到给定网站的 Azure 门户并配置了其绑定。

我的问题是:如何配置 Azure 以在端口 443 上输出必要的文件描述符?

我已经阅读了一些关于如何在云服务here 中配置工作人员的信息,但它似乎不适用于网站。

作为参考,当我尝试收听 443process.env.PORT 时,我收到以下错误:

Application has thrown an uncaught exception and is terminated:
Error: listen EACCES
    at errnoException (net.js:901:11)
    at Server._listen2 (net.js:1039:14)
    at listen (net.js:1061:10)
    at Server.listen (net.js:1127:5)

【问题讨论】:

  • 您是否指定了要监听的地址?
  • 对于那些好奇的人来说,一个普通的 http 服务器监听 process.env.NODE 是你所需要的——除了没有 https 服务器。
  • @hexacyanide:不。好吧,我曾尝试将 azure PORT 与 https.Server 实例一起使用,但这会引发上述 EACCES 错误。
  • @Nick W,我认为您的意思是 process.env.PORT,而不是 process.env.NODE。
  • 如果您需要强制 SSL,请查看此问答:stackoverflow.com/questions/20578283/…

标签: node.js azure ssl azure-web-app-service


【解决方案1】:

我假设你已经阅读了http://www.windowsazure.com/en-us/develop/net/common-tasks/enable-ssl/

如果我理解正确,Azure 将为您完成 https 终止。您的应用/服务仍会获得 http 流量。

无论如何,您仍然需要收听process.env.PORT。总是。并且总是会在那里获得http流量(不是https)。如果原始客户端使用端口 80,Azure 只会对您进行直通。如果客户端使用 443,Azure 会终止 https 并向你打开一个 http 请求。

【讨论】:

  • 啊,这就是关键。 Azure 自己负责加密,只是将解密的请求通过管道传输到应用程序。
  • 尼克,你搞定了吗?如果 Azure 负责加密,您是否不必在 node.js 应用程序中指定密钥和证书?我有一个类似的问题。另外,有没有办法对所有请求强制使用 https?换句话说,我只想打开 https,比如 gmail。
猜你喜欢
  • 2017-09-18
  • 2017-05-16
  • 1970-01-01
  • 1970-01-01
  • 2013-12-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-01-27
相关资源
最近更新 更多