【问题标题】:nginx load balancer configuration not workingnginx负载均衡器配置不起作用
【发布时间】:2021-09-22 22:17:49
【问题描述】:

我有一个非常简单的负载平衡配置,用于 PoC 目的。我的应用程序 server1 和负载均衡器服务器是相同的。下面是我的负载均衡器 conf 文件内容。请帮助我这是正确的吗?

目前,每当我的所有请求都发送到 IP1 时。我希望每当我点击 IP1 时它也会将流量路由到 IP2,如果这种理解有误,请更正。

upstream myapp1 {
    server srv1.example.com;
    server srv2.example.com;
    server srv3.example.com;
            }

server {
    listen 80;

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

【问题讨论】:

    标签: nginx load-balancing


    【解决方案1】:

    您的配置是正确的。向您的 NGINX 代理端口 80 发送多个请求将使用默认的 LB 算法循环将流量负载均衡到您的后端(上游)服务器之一。

    检查一下: https://www.nginx.com/resources/wiki/start/topics/examples/loadbalanceexample/

    http {
      upstream myproject {
        server 127.0.0.1:8080;
        server 127.0.0.1:8081;
        server 127.0.0.1:8082;
      }
    
      server {
        listen 80;
        server_name www.domain.com;
        location / {
          proxy_pass http://myproject;
        }
      }
    }
    

    您可以从任何 Linux 命令行尝试此操作

    for ((i=1;i<=10;i++)); do curl -v "http://localhost"; sleep 1; done

    这应该打印 AppServer1, AppServer2, AppServer3 并从 1 重新开始。

    演示后端可能看起来像

    server {
        listen 8080;
        location / {
          return 200 "AppServer1\n";
        }
      }
    
    server {
        listen 8081;
        location / {
          return 200 "AppServer2\n";
        }
      }
    
    server {
        listen 8082;
        location / {
          return 200 "AppServer3\n";
        }
      }
    
    

    我刚刚在一个新的 nginx docker 容器中测试,没有任何问题。

    【讨论】:

    • 谢谢@Timo Stark - 我错过了配置文件中的 server_name 参数。现在看起来不错。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-04-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-08-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多