将 AWS CloudFront CDN 放在方形空间网站前面需要哪些设置?

What settings are required to put AWS CloudFront CDN in front of a squarespace website?

我在让 AWS CloudFront 与 SquareSpace 一起工作时遇到了问题。表单未提交和网站说网站已过期的问题。让 CloudFront 使用 Squarespace 站点需要哪些设置?

以下是让 CloudFront 与 Squarespace 一起工作的设置!

行为:

  • 允许的 HTTP 方法确保您 select:GET、HEAD、OPTIONS、PUT、POST、PATCH、DELETE。否则表格将无法工作:
  • 转发Headers:Select白名单并选择'Host'。否则 squarespace 将不知道他们需要加载哪个网站并且您会收到消息 'Website has expired' 或类似的消息。

起源:

  • 源域名设置为:ext-cust.squarespace.com

  • 源站协议策略 Select HTTPS 这样 CDN 和源站之间的流量也是安全的

一般

  • 备用域名 (CNAME) 将您的 www 和 none www 地址放在这里,让 Squarespace 决定是否将 www 指向根目录或 vice-versa(例如 example.com www.example.com) 您现在可以在 CloudFront

  • 上配置 SSL
  • HTTPS 您现在可以在此处而不是在 Squarespace

  • 中使用证书为您的站点强制执行 HTTPS


我不确定的设置:

  • 转发查询字符串:不推荐用于缓存,但我认为这可能会破坏...


53 号公路

为 www 和 root 创建 A 记录(例如 example.com www.example.com)并设置为您的 CloudFront 分配的别名

这绝对是可行的,考虑到我刚刚设置它。让我分享一下我在 Cloudfront、Squarespace 和 Route53 上使用的设置,以使其正常工作。如果您想使用与 AWS Route53 不同的 DNS 服务,您应该能够调整这些设置。请记住,这不是一个 e-commerce 站点,而是一个带有 博客 静态页面 和 [=56] 的标准站点=]表格。您可能会根据出现的其他问题调整这些说明 as/if。

云端(CDN)


要完成这项工作,您需要为 Web 创建一个 Cloudfront Distribution

原点设置

  • 源域名应设置为ext-cust.squarespace.com。这是Squarespace对外域名的入口。
  • 源路径可以留空。
  • Origin ID 只是此发行版的唯一 ID,如果您在发行版创建屏幕上,应该 auto-populate,或者如果您正在编辑,则应该固定稍后设置 Origin。
  • Origin Custom Headers不需要设置

默认缓存行为设置/行为

  • 路径模式 应保留为默认值
  • 我已将 查看器协议策略 设置为 将 HTTP 重定向到 HTTPS。这决定了您的站点是否可以使用 HTTP 或 HTTPS 之一或两者。我更喜欢安全地路由所有流量,因此我将所有 HTTP 流量重定向到 HTTPS。请注意,您不能执行反向操作并将 HTTPS 重定向到 HTTP,因为这会导致身份验证问题(您的浏览器不想公开您认为 是安全连接的内容)。
  • 允许的 HTTP 方法 需要是 GET、HEAD、OPTIONS、PUT、POST、PATCH、DELETE。这是因为表单(可能还有评论等其他内容)使用 POST HTTP 方法来工作。
  • 缓存的 HTTP 方法 我只剩下 GET,HEAD。这里不需要其他任何东西。
  • 转发Headers需要设置为全部白名单。我们之前提到的 Squarespace 的入口点需要知道您来自哪个域来为您的网站提供服务,因此 Host header 必须列入白名单,或者允许与其他所有内容一起使用,如果设置为全部。
  • Object 缓存最小 TTL最大 TTL默认TTL都可以保持默认。
  • 转发 Cookie cookie 是使表单正常工作所缺少的组件。您可以将其设置为 All,或 Whitelist。 Squarespace 将某些 session 变量用于验证、安全性和其他实用程序。我已将以下值添加到 Whitelist CookiesJSESSIONID, SS_MID, crumb, ss_cid, ss_cpvisit, ss_cvisit, test。确保将每个值放在单独的行中,不带逗号。

  • Forward Query Strings 设置为 True,因为某些 Squarespace API 调用使用查询字符串所以这些必须传递。

  • 流畅流式传输限制查看者访问自动压缩Objects 都可以保留其默认值,或者如果您知道需要对它们进行不同的设置,则可以根据需要进行选择。

分发设置/常规

  • 价格ClassAWS WAF Web ACL可以单独留下。
  • 备用域名 应列出您的域,以及附加了 www 子域的域,例如example.com, www.example.com.
  • 对于 SSL 证书,请按照教程 here 将您的证书上传到 IAM(如果您尚未上传),然后刷新您的证书(有一个控件在下拉菜单旁边),select 自定义 SSL 证书 和 select 您配置的证书。这可确保浏览器将您的 SSL over HTTPS 识别为有效。如果您根本不使用 HTTPS,则没有必要这样做。
  • 以下所有设置都可以保留默认设置,或选择以满足您自己的特定要求。

53 号公路 (DNS)


  • 您需要为您的域设置一个托管区域(这特定于 Route 53 设置)。
  • 您需要设置一条 A 记录以指向您的 Cloudfront 分配。
  • 您应该为 www 子域名设置一个 CNAME 记录指向您的 Cloudfront 分配,即使您不打算使用它(稍后我们将通过重定向 www 子域将 Squarespace 设置为仅使用根域)

方形空间


在您的 Squarespace 网站上,您只需转到 Settings->Domains->Connect a Third-Party Domain。到达那里后,输入您的域并继续。下在域的设置中,如果您希望从 www.example.com 访问您站点的人重定向到根 example.com,则可以取消选中 使用 WWW 前缀。我更喜欢这个,但这取决于你。在 DNS 设置 下,您唯一需要的值是指向 verify.squarespace.com 的 CNAME。将此 CNAME 记录添加到 Route 53 或其他 DNS 提供商的 DNS 设置中。它永远不会说您的连接已经完全完成,因为我们使用的是自定义部署方式,但这无关紧要。

您的站点现在应该通过指向您的 Squarespace 部署的 Cloudfront 运行!请注意,DNS 传播需要时间,因此如果您无法访问该站点,请给它一些时间(最多几个小时)来传播。

备注


我不能确切地说 Whitelist Cookies 下设置的每个值是否都是必需的,但这些是通过使用 Chrome Inspector 来获取的确定请求中 Cookie header 下存在哪些 cookie。最初我试图告诉 Cloudfront 将 Cookie header 本身列入白名单,但它不允许这样做(大概是因为它希望您使用 cookie-specific 白名单)。如果您的部署不起作用,请查看您的请求中是否传输了更多 cookie(在 Cookie header 下,您要查找的值应该类似于 my_cookie=somevalue;other_cookie=othervaluemy_cookieother_cookie 在我的示例中是您要添加到白名单的内容)。

可以使用相同的过程完全转发其他 header,这可能需要通过 转发 Headers 白名单。只需检查并查看是否有看起来可能需要通过的东西。

请记住,如果您没有将 header 或 cookie 列入白名单,它就不会进入 Squarespace。如果你不想打扰,或者一切都被影响了(请原谅我的语言),你总是可以设置为允许所有 headers/cookies,尽管这 会对缓存性能产生不利影响 。因此,如果可以的话,请保守一些。

希望对您有所帮助!