【问题标题】:Listening on SSL with node.js on AWS Beanstalk在 AWS Beanstalk 上使用 node.js 监听 SSL
【发布时间】:2013-06-12 03:29:48
【问题描述】:

我有一个 node.js 应用程序在 Beanstalk 上运行良好,但现在我正在尝试将其设置为使用 SSL 证书以允许 https 访问。但是,除了在端口 80 上的默认侦听之外,我尝试使用的任何配置设置都会导致整个应用程序(在 http 和 https 上)变得无法访问。

如果我继续运行同一个应用程序(在 process.env.PORT 上侦听)但将负载平衡器设置更改为侦听端口 443 和端口 80,那么两者都无法访问。

我也尝试过更改应用程序,使其使用节点 https 服务器包而不是 http 但这没有区别。告诉负载均衡器只监听端口 443 也不起作用。

据我所知,将其设置为允许端口 80 和 443 会使负载均衡器都转发到同一个端口 8080(由应用程序中的 process.env.PORT 给出) - 这是正确的吗?如果是这样,那么我需要在应用程序端进行哪些更改才能使其在应该已经在侦听正确的端口时工作?

【问题讨论】:

    标签: node.js amazon-web-services amazon-elastic-beanstalk


    【解决方案1】:

    我按照 AWS 论坛上的建议设法解决了这个问题:https://forums.aws.amazon.com/thread.jspa?messageID=463043

    我需要更改负载均衡器使用的安全组(自动创建并具有描述 ELB created security group used when no security group is specified during ELB creation - modifications could impact traffic to future ELBs 的安全组)。

    负载平衡器应该已经允许端口 80 上来自源 0.0.0.0/0 的 HTTP 流量,并且您必须在端口 443 上添加 HTTPS 流量,也来自 0.0.0.0/0,以允许 HTTPS 流量。这可以在 EC2 管理控制台的 Security Groups 部分完成。

    然后在您的 Node.js 应用程序中侦听端口 8080,您的内容可以通过 HTTP 和 HTTPS 访问。

    【讨论】:

    • 您能否澄清一下您的 Nodejs 应用程序只有 1 个 http 服务器在 8080 上侦听,而不是 2 个服务器(8080 上的 http 和 443 上的 https)?谢谢
    • @lastoneisbearfood 是的,一个 http 服务器在 Node 中监听 8080,然后负载平衡等处理 https
    • 我不知道您应该听 @ 8080 并且 ElasticBeanstalk 会执行 443->8080 / 80->8080 映射。我现在正在尝试。实际上,process.env.PORT || 8080
    • 它只是工作!惊人的!诀窍是为正确的组(负载均衡器组)设置 InBound 443!
    • 谢谢大家!环顾四周,这正是我所需要的!
    猜你喜欢
    • 2019-05-08
    • 1970-01-01
    • 2016-07-31
    • 2016-08-18
    • 2014-11-07
    • 1970-01-01
    • 1970-01-01
    • 2020-05-28
    • 1970-01-01
    相关资源
    最近更新 更多