场景是这样的,我在两个互为备份的应用服务器前面有一个 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 脚本,它似乎能够完美地适合我的场景。