如何在Amazon Route53中将http请求转发到https?

huz*_*yfe 23 https forwarding amazon-web-services amazon-route53

我在Amazon Route53中有一个子域.让我们说secure.example.com

如果请求来https://secure.example.com得好,但我想http通过https 强制请求.当用户类型http://secure.example.com需要转发时https://secure.example.com.

是否有一个域级别重定向/转发请求通过来httphttpsAmazon Route53

Nea*_*gee 17

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

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

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

RewriteEngine On
RewriteCond %{SERVER_PORT} !^443$
RewriteRule (.*) https://www.host.com/$1 [R]
Run Code Online (Sandbox Code Playgroud)


Seb*_*rin 17

2019 +

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

经典负载均衡器

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

应用程序负载均衡器

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

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

你只需要:

  • 编辑 HTTP : 80 规则

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

  • 保存,您应该会看到如下内容: 在此处输入图片说明


Mrk*_*dig 10

只是这个问题的快速更新.在回答您的问题时,您不能使用路由53来强制HTTPS,这会导致某些人认为在AWS托管上强制执行https是不可能的.

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

  • 这是正确的答案,应标记为正确答案。最高分! (3认同)

小智 5

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

aws elb 编辑屏幕截图