nginx 反向代理用于高可用性设置?

nginx 反向代理用于高可用性设置?

场景是这样的,我在两个互为备份的应用服务器前面有一个 nginx 反向代理服务器,我希望 nginx 首先将所有用户请求转发到第一个应用服务器,如果第一个应用服务器宕机,我希望 nginx 从那时起将所有用户请求转发到第二个应用服务器,直到第二个应用服务器宕机,然后 nginx 应该恢复将所有用户请求转发到第一个应用服务器,依此类推。当然,如果两个应用服务器都宕机了,那么 nginx 将返回错误。

我研究了上游负载平衡和 proxy_next_upstream 设置等设置,但似乎不是我真正想要的。有人知道如何为我的情况配置 nginx 吗?谢谢。

答案1

您将需要使用 nginxupstream配置来实现这一点。

upstream mybackend {
    # first app server
    server 192.168.0.1;

    # second app server
    server 192.168.0.2 backup;
}

server {
    ...

    location / {
        proxy_pass http://mybackend;
    }
}

这里的关键是参数,它告诉 nginx 仅在主节点(即未标记的节点)不可用backup时才使用该节点。backup

满的文档在这里

答案2

经过更多搜索后,我决定使用 OpenResty (https://openresty.org/)满足我的需求,特别是 LuaUpstreamNginxModulehttps://github.com/openresty/lua-upstream-nginx-module通过一些自定义的 Lua 脚本,它似乎能够完美地适合我的场景。

相关内容