路径不会解析为域名,而是解析为 Elastic Beanstalk URL

Paths won't resolve in domain name but in Elastic Beanstalk URL

到目前为止我做了什么:

问题

我访问了该网站并获得了 domain.netwww.domain.net 的 SSL 连接,甚至从 HTTP 到 HTTPS 的重定向也有效。但是当我点击导航菜单中的 link 时,例如“关于”,我得到的页面是 NOT domain.net/about,但是 http://myenvironment-env.eba-zxsw5igy.us-east-1.elasticbeanstalk.com/about 使用“不安全”连接。但是,当我在浏览器中手动输入 URL 时,就像 domain.net/about 一样,我得到了正确的 URL。我可能做错了什么?

这里是对托管区记录的概述。

更新

在没有 SSL (+CloudFront) 的 Elastic Beanstalk 上使用相同的 Laravel 应用程序代码配置 Route 53 工作正常。我可以访问网站上的任何 link,它们正确解析为 domain.net/about

也许我没有正确地将 CloudFront 连接到 Elastic Beanstalk?同样,这就是我在 CloudFront 分发中所做的:在“原始域名”下,我放置了 Elastic Beanstalk URL,我选择了“将 HTTP 重定向到 HTTPS”,我在“备用域名”下输入 domain.net " 并为 domain.net

选择了 SSL 证书

所以,我找到了解决问题的办法。默认情况下,CloudFront 将 HTTP 请求 Header 设置为原始主机名——对我来说这是 ElasticBeanstalk URL。然后,应用程序会根据该来源生成链接。

要更改该行为,必须创建缓存策略和源请求策略并将主机 header 添加到白名单,因此 CloudFront 使用从浏览器发送的历史记录 header .

这个 answer 给了我提示,以及这些 AWS 资源: