我的设置如下:
这一切都是我想要的,但是......
原因是因为EC2看到来自负载均衡器的请求所以它假设基本网址是elb.example.com并相应地生成所有链接。
如何让EC2将基本网址视为example.com?
答案 0 :(得分:12)
此行为可能是由于默认情况下CloudFront将Host:
HTTP请求标头设置为源主机名,在本例中为elb.example.com。然后,应用程序可能会根据该主机名生成链接。
相反,如果您将CloudFront配置为将该标头列入白名单以转发到源,则浏览器(example.com)发送的主机标头将由CloudFront发送到应用程序,因此应用程序的行为应该更像您和#39; d在生成链接时期望并使用该值。有了这个,CloudFront仍然使用原始域名进行所需的DNS查找,以便建立到源的TCP连接(在本例中为ELB),但停止将该主机名注入HTTP请求头。
您将在缓存行为设置下找到主机标头 - >基于所选请求标头的缓存 - >白名单中。
答案 1 :(得分:1)
同时,从原始答案开始(在AWS方面)发生了一些变化。由于它的核心仍然是正确的。 (将主机标头添加到白名单中。)现在,您需要将此配置为自定义Cloudfront策略。您需要在Cloudfront AWS控制台中创建此策略。
创建自定义策略后,您可以使用发行版的“行为”标签配置此新创建的策略。可以通过将“缓存策略”更改为新创建的策略来实现。