带有动态回退的 Nginx proxy_pass

带有动态回退的 Nginx proxy_pass

我在 3 个不同的主机上运行nginx反向代理。DNS 将 production.example.com 解析为所有 3 个主机的 IP 地址。因此,如果一个主机不可用,我会进行某种负载平衡和回退。

每台主机都运行着多个docker容器,有的在三台主机上运行,​​有的只在两台甚至一台主机上运行。

利用nginxproxy_pass将所有请求转发到容器的内部名称(我正在使用 Rancher,因此每个容器都可以通过内部 DNS 通过 container_name.stack_name 访问)。

有时,容器不可用或没有响应,因此nginx返回错误 502。

有什么方法可以自动回退吗?不幸的是,它nginx会忽略内部 Docker 容器名称的所有其他已解析地址,因此不会将请求转发到其他地址。

答案1

你应该使用proxy_next_upstream指示

指定在什么情况下应将请求传递到下一个服务器

location / {
    proxy_pass http://backends;
    proxy_next_upstream error timeout http_502;
}

相关内容