Node.js AWS负载平衡器仅支持HTTPS和尝试访问HTTP的用户自动重定向到HTTPS

Node.js AWS负载平衡器仅支持HTTPS和尝试访问HTTP的用户自动重定向到HTTPS,node.js,apache,amazon-web-services,Node.js,Apache,Amazon Web Services,我使用AWS运行基于平均堆栈的应用程序。我在集群上使用负载平衡器和三个节点应用服务器实例以及三个mongo数据库服务器实例。以下是我的要求。 1.使用负载平衡器仅支持HTTPS 2.节点应仅运行HTTP服务器 3.负载平衡器将HTTPS和HTTP请求重定向到Apache,Apache将重定向到节点 我尝试了AWS并创建了负载平衡器。只有当我将80(HTTP)和443(HTTPS)端口重定向到Apache节点的80(HTTP)端口时,HTTPS才起作用。因此,到目前为止,我在负载平衡器上保留了两个

我使用AWS运行基于平均堆栈的应用程序。我在集群上使用负载平衡器和三个节点应用服务器实例以及三个mongo数据库服务器实例。以下是我的要求。 1.使用负载平衡器仅支持HTTPS 2.节点应仅运行HTTP服务器 3.负载平衡器将HTTPS和HTTP请求重定向到Apache,Apache将重定向到节点

我尝试了AWS并创建了负载平衡器。只有当我将80(HTTP)和443(HTTPS)端口重定向到Apache节点的80(HTTP)端口时,HTTPS才起作用。因此,到目前为止,我在负载平衡器上保留了两个端口重定向

此外,我还将80和443入站流量定义为安全组

我如何确保即使用户在浏览器中键入HTTP或HTTPS URL,我的负载平衡器也应该始终为HTTPS服务,并且用户只能访问HTTPS?以下是架构图供参考


请给我一些建议

在负载平衡器上,将端口80侦听器定向到实例上的端口8080

在Apache中,将端口8080重写为端口443

例如:


重新启动发动机
重写cond%{SERVER\u PORT}^443$
重写规则^/(*)https://%{HTTP_HOST}/$1[NC,R=301,L]
重写条件可能会被删除

<VirtualHost *:8080>
RewriteEngine on
RewriteCond %{SERVER_PORT} !^443$
RewriteRule ^/(.*) https://%{HTTP_HOST}/$1 [NC,R=301,L]
</VirtualHost>