AWS cloudfront 的一个小 bug
缘起
我厂有一个网站(域名 a.b.com
和 a1.b.com
),原来是跑在自己 IDC 里的机器上的,用 Docker 容器跑的,容器里就一个 nginx,放了一堆的静态资源。
为了“用户体验”,这两个域名都上了 CDN(AWS 的 cloudfront),源站分别是:
a.ori.b.com
a1.ori.b.com
最近做了一次架构调整,把这个服务迁移到了 AWS 的 EC2 上,而且将这个服务放在了一个 ALB 的后面,这个 ALB 是启用了 cloudfront 集成的,所以,我在 route 53 上就把这两个域名都解析到了 ALB 集成的这个 cloudfront distribution 的域名上了。
然后,发现问题了。a.b.com
工作符合预期而 a1.b.com
老是返回 502 错误,而且是 cloudfront 直接返回的。
排查过程
这里就不细说了
结论
当你要把一个域名由传统 cloudfront 上迁移到 ALB 集成的 cloudfront 的时候,你多半要小心了,如果你忘了把之前的 cloudfront distribution 的话,迁移可能会达不到你预期的效果的。也就是说,这个域名在 cloudfront 上还是会走之前的配置!哪怕你的域名已经正确指向了 ALB 集成的 cloudfront distribution.
多说几句
我上面的这个例子里,其实最早两个域名都是有问题的,但为什么有一个没有暴露出来呢,那是因为每暴露出来的这个,之前的 cloudfront distribution 到源站什么都是好的,所以他走原来的配置也没问题,但另外一个由于源站的域名指向被删除,所以原配置就无法工作了,才暴露出问题的。