Nginx proxy_pass到AWS ALB的504问题
我们的部分后端服务正在经历容器化的改造, 由于历史包袱,现网的网关等设施无法一次性迁移到 k8s 集群中, 因此使用 Nginx proxy_pass 转发到 AWS ALB 这样一个曲线救国的临时方案。 但是在使用时,我们发现一段时间后 Nginx 出现了 504 的错误,检查后端服务均是正常的,而单独访问 ALB 也是正常响应的,因此便有了此文。
该文章讨论了在使用Nginx的proxy_pass转发到AWS ALB时出现的504错误的问题。问题的根源是Nginx无法感知到ALB的IP地址变化,导致无法正确转发流量。解决方案是使用变量动态解析proxy_pass的DNS,让Nginx每次请求都获取最新的DNS解析记录。文章还介绍了其他解决方案,如使用Tengine的动态upstream模块、ngx_upstream_jdomain模块、nginx-upstream-dynamic-servers模块以及商业版本Nginx Plus。
