【问题标题】:AWS ALB redirect to httpsAWS ALB 重定向到 https
【发布时间】:2018-10-08 10:56:33
【问题描述】:

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

我在虚拟主机配置中有这个重写规则:

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

这可行,但问题是我在 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} 来重写规则来解决这个问题。这是最好的方法吗:

RewriteRule ^sub$ https://%{HTTP:Host}/newsub [R=301,L]

【问题讨论】:

  • 如果您有权访问 .conf 文件,则根本不应该使用 .htaccess
  • 是的,我正在考虑只使用一个带有重定向的 .conf 文件,然后在 vhost 配置中进行包含。我的目标是为我的用户简化重定向文件。

标签: apache .htaccess redirect amazon-elb


【解决方案1】:

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

这是我为使其在 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/

【讨论】:

  • 我不知道为什么,但是这个重定向在我们新创建的 ALB 的下拉列表中不可用。
  • @Jangid - 你能分享更多信息吗?哪个地区? LB型?创作方法?另外,请分享截图。
  • 我摆弄了一段时间,重定向选项开始出现。可能是一些 JavaScript 缓存问题。
  • 好吧,也许吧。
【解决方案2】:

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

  1. 转到 EC2 控制台,然后从左侧菜单转到 负载平衡负载平衡器
  2. 单击您的 ALB 名称复选框,然后选择 Listeners 选项卡。如果您为 HTTP 和 HTTPS 创建两个侦听器,请转到第 4 步。
  3. 如果您在首次创建负载均衡器时未设置 HTTPS 侦听器,请单击添加侦听器。选择 HTTPSPort(通常为 443)。在 Default action(s) 中选择 Forward to... 选项,然后为您的负载均衡器选择 Target Group权重 1. 选择合适的安全政策,然后为你的案例添加你的默认SSL证书(你必须有一个ssl证书注册AWS Certificate ManagerAWS IAM)。然后点击保存。测试你的设置去https://load-balancer-dns-namehttps://your-server-dns-name
  4. 要配置 HTTP 重定向,请选中 HTTP:80 复选框并单击 编辑 按钮。在默认操作中单击thrash图标以删除转发到当前设置。然后点击 Add 操作并选择 Redirect to 选项。此部分的常用值是 HTTPS443 端口、原始主机、路径、查询301 - 永久移动 .最后,点击页面右上角的更新按钮。
  5. 现在测试转到http://load-balancer-dns-namehttp://your-server-dns-name,您将被重定向到HTTPS。

希望对你有帮助!

【讨论】:

  • 这很好用,谢谢。正如很多人推荐的那样,我在使用 NGINX 位置重定向时遇到了很多问题,这可以快速实施并且效果很好。
猜你喜欢
  • 2020-01-05
  • 1970-01-01
  • 2021-01-01
  • 1970-01-01
  • 2021-11-05
  • 2018-03-27
  • 1970-01-01
  • 2020-12-21
  • 1970-01-01
相关资源
最近更新 更多