Nginx Round Robin Load balancing Upstream Servers are not in sequential order, behavior changes between chrome,firefox,IE 浏览器

Nginx Round Robin Load balancing Upstream Servers are not in sequential order, behaviour changes between chrome,firefox,IE browsers

在 Virtual box(ubuntu 服务器)中配置 Nginx 服务器并打开端口 80 到 windows 主机, 使用基本节点应用程序对 5 Ubuntu 个服务器执行相同操作,该应用程序分别用 5 个服务器打印 1、2、3、4、5。 配置了 Nginx.conf 文件

events{
}

http{
        upstream serverslist {
#               Server 8001
                server 192.168.100.2:3000;
#               Server 8002
                server 192.168.100.3:3000;
#               Server 8003
                server 192.168.100.4:3000;
#               Server 8004
                server 192.168.100.5:3000;
#               Server 8005
                server 192.168.100.6:3000;
        }
        server {
                location / {
                        proxy_pass      "http://serverslist/";
                }
        }
}

从 Nginx 服务器分别对这些服务器执行 Ping 和 Curl 操作完美无缺,returns 预期结果。 即在每个 curl localhost 给出 1, 2, 3, 4, 5, 1, 2, 3, 4, 5. 按照这个顺序。这是预期的。

但是当我在 Chrome 浏览器中加载 Nginx 服务器时,我得到输出 1, 3, 5, 2, 4, 1, 3, 5, 2, 4.
当我在 Firefox 中加载 Nginx 服务器时,我得到输出 1, 2, 3, 4, 5. (正确)
当我在 android 上的 duckduckgo 浏览器中加载 Nginx IP 时,它给出 5, 4, 3, 2, 1, 5, 4, 3, 2, 1.

我尝试添加许多 proxy-based headers 和纯 headers 来自网络,找不到任何解决方案来在所有浏览器中获得相同的输出,即 1、2、 3、4、5、1、2、3、4、5。同一服务器的每次重新加载。

任何帮助都会很棒。

编辑 3:发现了一个有趣的问题。 在 chrome 中,每次我访问我的网站时,它都会进行两次调用,无论它们被称为 to/of 我的网站和 /favicon.ico 我的网站。 我没有 /favicon.ico。 我认为正在发生的事情

  1. 当 Nginx 收到请求时 for/of 我的网站,它正在上游加载第一个服务器。
  2. 当 chrome 从我的网站加载 / 时,它还会调用我网站的 /favicon.ico ,这会导致对 Nginx 进行新调用,因此它会从上游的下一个服务器加载 .ico 文件。
  3. 发生这种情况是为了按顺序加载服务器 1、2、3:1(来自 2 的 ico 文件)、3(来自 1 的 ico 文件)、2(来自 3 的 ico 文件)。并循环重复。

一旦我停止在 Nginx 中加载 /favicon.ico,我的三个上游服务器 1、2、3 将按循环法的顺序 1、2、3 加载。

我把它放在服务器上游以禁止从 Nginx 加载 favicon.ico。

location = /favicon.ico {
  log_not_found off;
}

希望遇到此问题的任何人都能发现它有用。

编辑 2:解决了问题,负载平衡在 Nginx conf 文件中的静态文件和静态服务器上运行良好。 但是我的应用程序是由节点加载的,所以必须在启动所有节点服务器后启动 Nginx。 当我在 Nginx 为 运行 时重新启动应用程序服务器时问题再次出现。 现在没问题会更新

编辑 1:这对我来说不再有效,昨天有效,今天继续使用相同的配置,问题再次出现。

我的设置也有同样的问题。 经过大量代理设置、VirtualBox 设置和网络编辑后,什么对我有用。

在 HTTP 块中添加一个额外的服务器块。

server{
}

并重新加载 Nginx 服务。

它对我有用,在重新加载一次 chrome 和 firefox 按给定顺序加载服务器后,我删除了服务器块,它仍在工作。

不知道为什么首先提出这个问题。 希望这有助于解决您的问题。