nginx 重定向/代理,一个域名(url)具有两个 IP

nginx 重定向/代理,一个域名(url)具有两个 IP

我们想要为一个 Java 应用程序设置故障转移机制,该应用程序在一台服务器上有 3 个实例,每个实例都必须通过不同的 url 访问,这些 url 已经注册并可通过 dns 访问。在辅助服务器上我们进行复制(重要的是实例只能在一台物理机器上启动和运行),因此我们建立了辅助服务器以防主服务器出现故障,我们想要为一个域注册多个 IP,但这会导致麻烦,因为应用程序设计为只有一个 IP 注册到实例 url。多个 ip 设置的另一个问题是 dns 的循环性质。是否可以为一个域注册两个 IP,并通过 nginx 或 HAproxy 代理它以仅指向主服务器?或者其他想法?我的想法是,如果主服务器出现故障,则在辅助服务器上打开应用程序并尽可能更改 nginx 端的配置,以避免 dns 注册和传播时间?

答案1

我要做的是接受域名实际名称的传入流量,然后手动进行路由/故障转移。

IE

example.com > nginx 服务器 > server1.(如果失败)> server2.

http {

    上游 java-app {
        服务器 $primary-server;
        服务器$secondary-服务器备份;
    }

    服务器 {
        地点 / {
            代理密码 http://java-app;
            proxy_set_header 主机 "example.com";
            proxy_next_upstream 错误 http_502;
        }
    }
}

通过使用此方法,您的后端服务器无需担心 DNS。只有 Nginx 才会有指向它的 DNS 记录。您的后端服务器只需担心处理传入流量,如果服务器primary-server挂了……辅助服务器将接管!

通过在其中添加主机标头,您的后端服务器仍然可以匹配其代码中的“主机”标头。:)

相关内容