domain-name-system – AWS Cloudfront Load Balancer,url从主域更改为负载均衡器子域

domain-name-system – AWS Cloudfront Load Balancer,url从主域更改为负载均衡器子域,第1张

概述我的设置如下: >用户在浏览器上键入example.com >请求转到AWS CloudFront,它将HTTP重定向到HTTPS,以及 将请求转发给AWS Elastic LoadBalancer (elb.example.com) > LoadBalancer将请求转发到运行PHP的EC2实例 Laravel框架 > EC2正常响应 >用户使用其他所有内容在example.com上正确查看页面 我的设置如下:

>用户在浏览器上键入example.com
>请求转到AWS CloudFront,它将http重定向到httpS,以及
将请求转发给AWS Elastic LoadBalancer
(elb.example.com)
> LoadBalancer将请求转发到运行PHP的EC2实例
Laravel框架
> EC2正常响应
>用户使用其他所有内容在example.com上正确查看页面
对他透明

这一切都是我想要的,但是……

>如果用户导航到页面上的任何按钮,则该网址上的URL
浏览器将成为elb.example.com(它应该保留example.com)
>如果我去查看页面源,页面上任何按钮的所有链接
有elb.example.com的基本网址(应该是example.com)

原因是因为EC2看到来自负载均衡器的请求,因此它假定基本URL是elb.example.com并相应地生成所有链接.

如何让EC2将基本URL视为example.com?

解决方法 此行为可能是由于默认情况下CloudFront将Host:http请求标头设置为源主机名,在本例中为elb.example.com.然后,应用程序可能会根据该主机名生成链接.

相反,如果您将CloudFront配置为将该标头列入白名单以转发到源,则浏览器(example.com)发送的主机标头将由CloudFront发送到应用程序,因此应用程序的行为应该更像您期望的并在生成链接时使用该值.有了这个,CloudFront仍然使用原始服务器主机名进行所需的DNS查找,以便建立到源的TCP连接(在本例中为ELB),但停止将该主机名注入http请求头.

http://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/distribution-web-values-specify.html#DownloadDistValuesForwardHeaders

这已由@ michael-sqlbot on SO回答

总结

以上是内存溢出为你收集整理的domain-name-system – AWS Cloudfront Load Balancer,url从主域更改为负载均衡器子域全部内容,希望文章能够帮你解决domain-name-system – AWS Cloudfront Load Balancer,url从主域更改为负载均衡器子域所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1095108.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-28
下一篇 2022-05-28

发表评论

登录后才能评论

评论列表(0条)

保存