我有一个子域(test.XXXX.com)指向接受 HTTP(80) 和 HTTPS(443) 请求的 AWS 弹性负载均衡。我已为 HTTPS 连接配置了 443 的 SSL 证书。我尝试过通过更改Web.xml和服务器在Tomcat级别执行HTTP到HTTPS重定向.xml如中所述
http://www.journaldev.com/160/steps-to-configure-ssl-on-tomcat-and-setup-auto-redirect-from-http-to-https
但问题是,我需要一个用于 AWS ELB 运行状况检查的终端节点,该终端节点不执行 HTTP 到 HTTPS 重定向。我尝试了不同的解决方案,但没有成功。我也试过了
<security-constraint>
<web-resource-collection>
<web-resource-name>Protected Context</web-resource-name>
<url-pattern>/*</url-pattern>
</web-resource-collection>
<user-data-constraint>
<transport-guarantee>CONFIDENTIAL</transport-guarantee>
</user-data-constraint>
</security-constraint>
<security-constraint>
<web-resource-collection>
<web-resource-name>Protected Context</web-resource-name>
<url-pattern>/XXXXX/XXXXXX.html</url-pattern>
</web-resource-collection>
</security-constraint>
我的服务器server.xml具有如下配置
<Connector port="80" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="443" />
<Connector port="443" maxThreads="2000" scheme="https" secure="true" SSLEnabled="true" keystoreFile="/home/XXXXX/XXXXX.keystore"
keystorePass="XXXXX" clientAuth="false" keyAlias="XXXX"
sslProtocol="TLS" protocol="org.apache.coyote.http11.Http11Protocol"/>
但是当尝试通过浏览器访问它时,它会ERR_TOO_MANY_REDIRECTS。
由于您在Tomcat中使用HTTP到HTTPS重定向,因此最简单的解决方案是将重定向视为有效响应。
使用经典的弹性负载均衡器无法做到这一点,但可以使用新的应用型负载均衡器。
我建议您将负载均衡器切换到新的ALB并将健康检查配置为接受200-399作为健康响应代码。
您还可以通过切换到新的应用型负载均衡获得其他好处,例如它每小时更便宜,并且可以根据路径和主机名路由到不同的实例组。
现在AWS ELB支持两个新操作:重定向和固定响应。您可以将这些操作配置为基于内容的路由规则的一部分,使您能够将此功能卸载到负载均衡器
通过重定向操作,负载平衡器可以将传入的请求从一个URL重定向到另一个URL。这包括将HTTP请求重定向到HTTPS请求的能力。
我有一个解决你问题的办法,但这与tomcat无关。您可以使用Cloudfront分发版
让我强调一下通过Cloudfront分发实现这一目标的几个关键配置:
因此,这有效地作用是,它消除了tomcat的重定向,并在云前线级别进行处理。默认情况下,所有请求都重定向到 HTTPS,而仅针对 /healthcheck 路径,则允许 HTTP 请求。重定向不需要在较低级别处理。请让我知道这是否适合您。另外,请注意,route53 和云前更改需要一些时间来执行。因此,请等待足够的时间才能获得成功的测试
问题是,我还想将HTTP访问重定向到HTTPS,然后我试图添加一个规则将80重定向到443,因此它将落入第一个规则(443到8080)并使用证书,但它不起作用。在网上研究,我发现我应该在我的。htacess文件中添加一些行,但也不起作用。我认为这不是我的解决方案,因为所有HTTPS的东西都在AWS端,有没有一种方法可以只通过AWS将HTTP重定向到HTTPS而不改变服务器?
以下是我的设置: EC2与Apache使用弹性负载均衡器。 我希望所有超文本传输协议流量都自动重定向到https。我找到了这个reco,并通过添加到我的httpd.conf文件中来尝试: 然而,这在我重新启动服务器之前或之后都不起作用。HTTP没有重定向,我的站点抛出了各种错误,直到我从配置中删除了该规则。 我认为我更新文件错误或负载均衡器设置不正确。对于负载均衡器的侦听器,我有LB协议HTTP,
我使用AWS Elastic Beanstalk在一些EC2实例上使用负载平衡器来托管我的网站。 我正在使用OctoberCMS(作为框架的laravel风格) 我已通过 AWS 证书管理器通过 ELB 设置了 SSL 证书,一切正常。 但是有一个问题。 我想将HTTP重定向到HTTPS。 根据AWS,我得到了一个小的。执行该工作的htaccess代码片段: 但是,当用户到达他们需要因此他们开始以
我在beanstalk和配置的nginx实例上有一个经典的负载均衡器。我想重定向http到https请求。 我设置了负载均衡器侦听器重定向到端口80到它的实例。 我在.ebextensions/nginx_config.config中创建了一个文件,在其中设置重定向并筛选出HealthCheck。 请参阅下面的配置重写: 但似乎什么也没有发生,服务器仍然没有重定向到HTTPS。好像我的配置被忽略了
当我们使用AWS应用型负载均衡将传入请求重定向到我们的服务器时,我们创建了一个SSL证书并将其设置为负载均衡器。它同时监听HTTP 80和HTTPS 443端口的流量。在这两种情况下,流量都被重定向到目标组实例的HTTP 80端口。 在这些情况下,有nginx服务器配置为侦听它们所在的实例的HTTP 80端口。 当我更新nginx.conf文件以将传入的HTTP请求重定向到HTTPS协议时,我们面