AWS负载均衡代理用于Nodejs

4
我已经配置了负载均衡器,将请求路由到运行NodeJs服务器的两个Ec2实例。我需要将来自http(端口80)和https(端口443)的请求都指向NodeJs EC2实例的http(端口80)。我已经将SSL证书上传到AWS并配置了负载均衡器以使用SSL证书。问题是来自http端口的请求不会自动路由到https。必须编写位于server.js中的服务器端脚本或片段,该脚本应将http路由到https,我尝试过但遇到无休止的重定向。所以问题是:
  • 是否有任何AWS指南可以完成此操作?
  • 如果没有,任何指针或建议将不胜感激。

你正在使用 nginx 吗? - eduPeeth
不,我没有使用nginx。 - Jeet
嗯...我相信你只需要在AWS中进行配置。我很久以前就做过了。 - eduPeeth
只有在当前协议为HTTP而不是HTTPS时,才应将其重定向到HTTPS。也许你可以调整一下你的server.js文件。 - kirrmann
4个回答

0

在服务器端,您可以检查X-Forwarded-Proto(原始请求协议),如果它的值为http,则可以发送重定向(http 302)到具有https协议的URL。

虽然使用ALB(应用程序负载均衡器),您可以指定一组规则,也许可以在那里完成此操作...


0

我在AWS上找不到指南,但我会继续搜索,并在找到后更新答案。

通常,在Node.js中编写应用程序时,您需要指定应用程序运行的端口。这意味着您需要两个不同的服务器进行监听。当您的应用程序在80端口(HTTP)接收请求时,它应该重定向到您的HTTPS服务器,就像this答案中所述。

另一个可能与您的问题相关的要点是,在生产环境中,您通常不会将端口绑定到Node.js服务器上,因为它还没有准备好投入生产。您可能希望使用反向代理和负载均衡器,如Nginx或HAProxy。


0

0
将您的ELB放在Cloudfront后面,并在分发设置中选择将HTTP转发到HTTPS。 enter image description here 以下文档将会有所帮助 https://docs.aws.amazon.com/waf/latest/developerguide/tutorials-ddos-cross-service-ELB.html

这种方法有两个好处:

1-您的问题将得到解决

2-您可以使用强大的CDN优势,有关Cloudfront的更多信息,请阅读https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/Introduction.html

更新:

您可以通过编辑ELB中的侦听器设置,将HTTP流量转发到HTTPS。在此输入图像描述

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接