我参加了 AWS 培训,他们向我们解释说,一个好的做法是通过 Cloudfront 缓存所有动态内容,将 TTL 设置为 0,即使负载均衡器前面有一个 LB。所以它可能是这样的:
Route 53 -> CloudFront -> Application LB
我看不到这种架构的任何优势,而不是直接拥有(仅适用于动态内容):
Route 53 -> Application LB
我不明白这一点,因为 Cloudfront 将始终将所有流量发送到 LB,因此您将拥有:
- 两个 HTTPS 协商(客户端 <-> Cloudfront 和 Cloudfront <-> LB)
- 完全没有缓存(它是动态内容,不应该被缓存,因为这就是“动态”的意思)
- 您将没有客户端 IP,因为您的 LB 只会看到 Cloudfront IP(我知道这可以修复,以获得客户端 IP,但是您将遇到下一个项目符号的问题)。
- 作为一项额外的工作,您需要能够经常更新您的 LB 安全组,以匹配 CloudFront IP(对于该区域),因为我猜您只想从您的 Cloudfront 获取流量,而不是直接从 LB 公共端点获取流量.
所以,可能,我错过了关于这个Route 53 -> CloudFront -> Application LB
架构的一些重要的东西。
有任何想法吗?
谢谢!