AWS 负载均衡器将 www.example.com 重定向到 example.com 不起作用
Posted
技术标签:
【中文标题】AWS 负载均衡器将 www.example.com 重定向到 example.com 不起作用【英文标题】:AWS load balancer redirect www.example.com to example.com isn't working 【发布时间】:2021-04-25 01:20:05 【问题描述】:目前有一个弹性豆茎环境。
我已经进入了 EC2 下的负载均衡器设置,弹性 beantalk 就在上面。
从那里我选择了唯一的负载均衡器 > 侦听器 > 查看/编辑 80 和 443 端口的规则。
我继续添加主机标头为www.example.com的规则
我还添加了一个 行动:重定向https 端口:443 自定义主机、路径、查询:主机是 example.com 选择的重定向是 301。
我继续为 80 和 443 听众“添加操作”。
问题是它不起作用,当我转到http://www.example.com 或https://www.example.com 时,它不会转到https://example.com
http://example.com 确实转到 https://example.com
【问题讨论】:
您在 EB 环境中运行什么?你用的是什么网络服务器? @markwalker_ 我正在运行一个简单的 nextjs 网络应用程序 【参考方案1】:您可以将文件添加到 elasticbeanstalk 将查找的文件以修改堆栈。
为此,首先将一个名为 .ebextensions
的文件夹添加到项目的根目录中。
在.ebextensions
文件夹中创建一个名为http-to-https-redirection.config
的文件(或者您会认识的其他名称)。然后在这个文件中粘贴以下内容(这是官方AWS config)
Resources:
AWSEBV2LoadBalancerListener:
Type: 'AWS::ElasticLoadBalancingV2::Listener'
Properties:
DefaultActions:
- Type: redirect
RedirectConfig:
Protocol: HTTPS
Port: '443'
Host: '#host'
Path: '/#path'
Query: '#query'
StatusCode: HTTP_301
LoadBalancerArn:
Ref: AWSEBV2LoadBalancer
Port: 80
Protocol: HTTP
AWSEBV2LoadBalancerListenerHTTPS:
Type: 'AWS::ElasticLoadBalancingV2::Listener'
Properties:
Certificates:
- CertificateArn: Replace with Certificate ARN
DefaultActions:
- Type: forward
TargetGroupArn:
Ref: AWSEBV2LoadBalancerTargetGroup
LoadBalancerArn:
Ref: AWSEBV2LoadBalancer
Port: 443
Protocol: HTTPS
您只需要填写适合您所做的重定向详细信息。
AWS 在 github 上提供更多示例配置文件; https://github.com/awsdocs/elastic-beanstalk-samples
【讨论】:
【参考方案2】:official document 说你做得对。所以这不是 ALB 问题。
我认为您的 EB 配置有问题(或者可能是 @MarkB 在 cmets 中所说的 DNS)。
目前,我只能说,如果你不配置任何东西,基本上www.example.com与example.com无关。
您的“两个”域(www.example.com
和 example.com
)是否指向由 EB 托管的同一页面?
【讨论】:
我该如何诊断? 那不是EB配置问题,而是DNS配置问题。 @MarkB 你的意思是我应该去路由 53,去指定的托管区域,创建一条 A 记录并将别名指向负载均衡器吗? @MarkB 您能回答一下您对 DNS 的哪个问题有疑问吗?也许它可能是由 DNS 引起的,但我不知道这种方式。 @ShaunChua 其实还有很多其他的方法可以做你想做的事。使用 Route53 可能就是其中之一。但我更感兴趣的是了解为什么您的方法不起作用。以上是关于AWS 负载均衡器将 www.example.com 重定向到 example.com 不起作用的主要内容,如果未能解决你的问题,请参考以下文章
是否可以将负载均衡器添加到没有负载均衡器的现有 AWS Elastic Beanstalk 应用程序?
在 AWS 中,如何将 Web 服务器安全组配置为仅接受来自 AWS 中的负载均衡器的流量?