为 Django 堆栈设置 Route 53->CloudFront->Elastic Beanstalk 基础设施

Posted

技术标签:

【中文标题】为 Django 堆栈设置 Route 53->CloudFront->Elastic Beanstalk 基础设施【英文标题】:Setting up Route53->CloundFront->Elasticbeanstalk infrastructure for Django stack 【发布时间】:2017-05-02 09:16:43 【问题描述】:

最近,AWS 引入了将 Cloudfront(CF) 连接到 Elasticbeanstalk 等自定义源的能力,从而能够通过动态服务器实现 CDN,而 WAL 介于两者之间。

我想使用这种 AWS 基础设施:

Route53->CloundFront->Elasticbeanstalk(+LoadBalancer)

而且我还希望为匿名用户缓存到相同 url 的请求的非零 TTL。

为此,我显然需要将 cookie 以及可能要排除缓存的标头列入白名单。直觉上我觉得我需要排除授权 cookie、csrf cookie - 答案是我需要排除哪些 cookie 和标头才能使一切正常?

还有一个 gist/lib 来解决从 X_FORWARDED_IP 标头链中排除 CF ip 地址的问题吗?

我发现了一个 article 描述如何为 Ruby 设置所有内容,这已经足够好,但没有描述与仅缓存通用基础架构设置相关的问题。

【问题讨论】:

【参考方案1】:

鉴于您的用户有一个会话 cookie 或一些识别他们的 cookie,您可以在 CloudFront 中将此 cookie 列入白名单。

CloudFront 缓存将仅缓存具有相同 cookie 值的用户,即不缓存登录用户,而仅缓存匿名用户。

默认情况下,CloudFront 会转发您的缓存 ttl,因此您可以从 beanstalk 应用程序中设置它。

【讨论】:

以上是关于为 Django 堆栈设置 Route 53->CloudFront->Elastic Beanstalk 基础设施的主要内容,如果未能解决你的问题,请参考以下文章

将 Amazon Route 53 域名链接到 EC2 实例

使用 Cloudfront、EB 和 Route 53 时,源域名应该设置啥?

使用 Shopify 商店设置时 Route53 DNS 无法解析

SSL 不适用于 AWS 上的 Route 53 域

Terraform 设置 Route53 NS 记录永远不会完成

Route53 域名不起作用(godaddy 域)