AWS CloudFront

时间:2018-05-12 10:15:48

标签: amazon-web-services caching proxy amazon-cloudfront bare-domain

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

即,如果CloudFront分配的来源为example.com,并且如果您在同一分配中放置example.com的CNAME,CloudFront将偶尔产生403错误。经过一番挖掘后,我发现这是预期的行为,因为使用此设置,其中origin和CNAME值相同,CloudFront将查找原点并生成错误。

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

更新

我已实施评论中建议的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分发。
  6. 我使用此解决方法的唯一优势是,这样可以在网络上发现原始服务器的IP地址。脚本小子可能会意外访问origin.example.com并且服务器的真实IP地址处于打开状态,因此您很容易发生DDoS。代理的众多好处之一就是使用它来隐藏真实服务器的IP地址。

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

3 个答案:

答案 0 :(得分:1)

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

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

在DNS中,只将<{1}} 指向到CloudFront。

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

答案 1 :(得分:0)

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

答案 2 :(得分:0)

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