39

我在 Amazon Route53 中有一个子域。比方说secure.example.com

如果请求来得https://secure.example.com很好,但我想强制http请求通过 https。当用户键入http://secure.example.com时,它需要被转发到https://secure.example.com.

是否有域级别的重定向/转发请求通过httphttpsin Amazon Route53

4

4 回答 4

22

只是这个问题的快速更新。在回答您的问题时,您不能使用路由 53 来强制使用 HTTPS,这会导致一些人相信在 AWS 托管上强制使用 https 是不可能的。

您可以在证书管理器中创建 SSL 证书(或导入您自己的证书),将您的网站托管在任何位置(S3/EC2),然后您需要为您的站点设置 CloudFront 分配并导入您的 SSL 证书,然后您可以使用该选项Redirect HTTP to HTTPS通过 CloudFront 控制台中的行为选项卡。

于 2017-06-15T09:43:02.267 回答
21

2019 +

@Jamaurice Holt 解决方案让我找到了方向,但有点短

经典负载均衡器

此解决方案仅适用于应用程序负载均衡器,不适用于经典负载均衡器,但您可以在 EC2 > 负载均衡器 > 您的负载均衡器 > 迁移中迁移以使用更新的应用程序均衡器

应用程序负载均衡器

在控制台上转到EC2 > 负载均衡器 > 你的负载均衡器 > 侦听器

在这里你应该有 2 条规则:HTTP:80 和 HTTPS:443

你只需要:

  • 编辑 HTTP : 80 规则

  • 删除转发规则并添加重定向规则到端口 443

  • 保存,您应该会看到如下内容: 在此处输入图像描述

于 2019-08-13T15:54:54.853 回答
19

不,没有办法做到这一点——因为它不是强制任何特定协议或将值从一个协议推送到另一个协议的 DNS 功能。在 Apache、IIS 或 NGINX 中,您可以在 Web 服务器级别轻松完成此操作。

在任何一种情况下,将特定记录指向特定地址(无论是 IP 还是其他主机名)的 A 或 CNAME 值都是相同的,它只是通过端口 80 或端口 443 进行连接。

在 Apache 中,您可以简单地使用重写(mod_rewrite首先启用):

RewriteEngine On
RewriteCond %{SERVER_PORT} !^443$
RewriteRule (.*) https://www.host.com/$1 [R]
于 2012-10-22T20:00:03.847 回答
4

我使用(ELB)应用程序负载平衡器完成了它,并将流量重定向到 ELB 编辑部分中的端口 443。当然,我正在使用 ec2 实例来托管我的应用程序和网站。

aws elb 编辑屏幕截图

于 2019-05-14T11:06:50.703 回答