AWS ALB重定向到https

时间:2018-04-27 14:54:31

标签: apache .htaccess redirect amazon-elb

我的Apache服务器位于ALB / ELB之后。我在负载均衡器处终止SSL。负载均衡器监听80和443.我想将所有http请求重定向到https。

我在vhost配置中有这个重写规则:

InverseProperty

这样可行,但问题是我还在htaccess文件中有重定向。当通过htaccess文件发生重定向时,它首先重定向到http,然后vhost配置重定向将其选中并重定向到https。我想消除额外的http重定向。

http://mysite.example.com/sub 301 https://mysite.example.com/sub 301 http://mysite.example.com/newsub - 此重定向是htaccess 301 https://mysite.example.com/newsub 200

我希望优雅地将htaccess重定向到http。我可以通过添加https://% {HTTP:Host}来重写规则来解决这个问题。这是最好的方法:

RewriteEngine On
RewriteCond %{HTTP:X-Forwarded-Proto} =http
RewriteRule .* https://%{HTTP:Host}%{REQUEST_URI} [L,R=permanent]

2 个答案:

答案 0 :(得分:7)

应用程序负载平衡器现在支持两个新操作:重定向和固定响应。您可以将这些操作配置为基于内容的路由规则的一部分,使您可以将此功能卸载到负载均衡器。这样可以简化部署,同时受益于弹性负载平衡的规模,可用性和可靠性。

这就是我要使其在AWS上工作的方式:

Example configuration for ALB redirection - HTTP -> HTTPS

https://aws.amazon.com/about-aws/whats-new/2018/07/elastic-load-balancing-announces-support-for-redirects-and-fixed-responses-for-application-load-balancer/

答案 1 :(得分:0)

如果您的Web服务器在 AWS Application Load Balancer 之后运行,并且您为HTTP端口80配置了至少一个侦听器,则可以通过以下操作直接将http重定向到https:

  1. 转到 EC2控制台,然后从左侧菜单中选择 Load Balancing Load Balancers
  2. 点击您的ALB名称复选框,然后选择 Listeners 标签。如果您为HTTP和HTTPS创建两个侦听器,请转到步骤4。
  3. 如果您在首次创建Load Balancer时未设置HTTPS侦听器,请单击添加侦听器。选择 HTTPS Port (通常为443)。在默认操作中,选择转发到... 选项,然后选择目标组作为负载均衡器。 权重,可以在1中确定。选择适当的安全策略,然后为您的案例添加默认SSL证书(您必须注册了ssl证书)在 AWS Certificate Manager AWS IAM 上)。然后点击保存。测试您要转到https://load-balancer-dns-namehttps://your-server-dns-name
  4. 的设置
  5. 要配置HTTP重定向,请选中HTTP:80复选框,然后点击 Edit 按钮。在默认操作中,单击 thrash 图标以删除 转发到 当前设置。然后点击添加操作,然后选择重定向到选项。此部分的常用值是 HTTPS 443 端口,原始主机,路径,查询 301-永久移动 。最后,点击页面右上方的更新按钮。
  6. 现在将测试转到http://load-balancer-dns-namehttp://your-server-dns-name,您将被重定向到HTTPS。

希望有帮助!