【问题标题】:Nginx Round Robin Load balancing Upstream Servers are not in sequential order, behaviour changes between chrome,firefox,IE browsersNginx Round Robin 负载均衡 上游服务器不按顺序排列,chrome、firefox、IE浏览器之间的行为变化
【发布时间】:2021-05-10 13:01:55
【问题描述】:

在Virtual box(ubuntu server)中配置Nginx Server,并为windows主机开放80端口, 对具有基本节点应用程序的 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 可以完美运行并返回预期结果。 即在每个 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。

我尝试添加许多基于代理的标头和来自网络的普通标头,找不到任何解决方案来在所有浏览器中获得相同的输出,即 1、2、3、4、5、1、2、3、 4, 5. On 同一服务器的每次重新加载。

任何帮助都会很棒。

【问题讨论】:

    标签: google-chrome nginx virtualbox reverse-proxy


    【解决方案1】:

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

    1. 当 Nginx 收到对我网站的请求时,它正在向上游加载第一台服务器。
    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 按给定顺序加载服务器后重新加载后,我删除了服务器块,它仍在工作。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-10-16
      • 2019-01-05
      • 2020-07-12
      • 2016-11-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-11-05
      相关资源
      最近更新 更多