繁体   English   中英

AWS CloudFront 背后的根域

[英]Root domain behind AWS CloudFront

根据亚马逊的这篇文章,我试图让整个 WordPress 网站在 AWS CloudFront 后面工作。 不仅是静态文件,还有整个网站(可以通过设置适当的缓存行为来完成)。 但是,如果您使用裸域( example.com ,没有www ),这似乎是不可能的。

也就是说,如果 CloudFront 分配的来源是example.com ,并且如果您将example.com的 CNAME 放在同一个分配中,CloudFront 将偶尔产生 403 错误。 经过一番挖掘,我发现这是预期的行为,因为在此设置中,源和 CNAME 值相同,CloudFront 将在自身上查找源并产生错误。

那么如何在使用裸域的同时使用 CloudFront 作为代理呢?


更新:

我已经实现了origin.example.com中建议的origin.example.com解决方案。 我遇到了一个错误,但现在它可以工作了。

  1. CF 发行版的来源是origin.example.com
  2. CF 发行版中的 CNAME 是example.com
  3. 在 CF 分发的缓存行为设置中, Host头被列入白名单。
  4. 在 DNS 中, origin.example.com指向带有 A 记录的服务器 IP。
  5. 在 DNS 中, example.com指向带有 ALIAS-A 记录的 CF 分布。

我对这个解决方法唯一的不满是,通过这种方式可以在网络上发现源服务器的 IP 地址。 脚本小子可能会意外访问origin.example.com并且服务器的真实 IP 地址是公开的,因此您很容易受到 DDoS 攻击。 代理的众多好处之一是,您可以隐藏真实服务器的 IP 地址。

我目前使用 Cloudflare 作为代理主要是因为这个原因。 过去我遭受了大规模的 DDoS 攻击,我的服务器的 IP 地址被主机空路由,所以我不得不迅速躲在 Cloudflare 后面并更改服务器的静态 IP。 从那以后就没有头痛了。 我想切换到 CloduFront,但使用裸域似乎不可行。

您必须在 DNS 中创建另一个主机名,指向实例,例如origin.example.com 但是实例不需要知道这个名字。

使用此新主机名作为源域名创建 CloudFront 源,然后在缓存行为中,将Host标头列入白名单以转发到源。

在 DNS 中,example.com指向 CloudFront。

CloudFront 然后将使用备用名称来查找实例的实际 IP 地址,但会在发送到源的请求中保留原始主机名 ( example.com )。

使用 CloudFront 缓存整个网站时,请为裸域 (example.com) 和解析为 CloudFront 域名的 www (www.example.com) 使用 A-ALIAS 记录。 如果您在 CloudFront 上使用 SSL,请确保两个域名都在证书中。

如果其他人遇到此问题,则问题可能出在证书上。 如果您的证书用于“*.example.com”,请确保它也添加了“example.com”。 如果没有,请创建一个新的。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM