为什么我的 Nginx 负载均衡器仅代理到第一台服务器?

为什么我的 Nginx 负载均衡器仅代理到第一台服务器?

我有一个使用 Nginx 的负载均衡器黑客服务器教程网站。这指的是循环设置中的两个服务器。我有一个自签名SSL证书来测试http重定向https

当我访问负载均衡器的 IP 地址时,请求仅转发到upstream app块中的第一个 IP 地址。我希望将其分成 50/50。

查看配置文件,有人可以告诉我该怎么做吗?这些都是 Amazon ec2 实例。

重定向从 到 进行httphttps代理到第一个服务器进行工作。

upstream app {
    server 172.31.33.5:80 weight=1;
    server 172.31.42.208:80 weight=1;
}

server {
    listen 80 default_server;

    # Requests to /.well-known should look for local files
    location /.well-known {
        root /var/www/html;
        try_files $uri $uri/ =404;
    }

    # All other requests get load-balanced
    location / {
        return 301 https://$http_host$request_uri;
    }
}

server {
    listen 443 ssl default_server;


    ssl_protocols              TLSv1 TLSv1.1 TLSv1.2;
    ssl_ciphers                ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA:ECDHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES256-SHA:ECDHE-ECDSA-DES-CBC3-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:DES-CBC3-SHA:!DSS;
    ssl_prefer_server_ciphers  on;
    ssl_session_cache          shared:SSL:10m;
    ssl_session_timeout        24h;
    keepalive_timeout          300s;

    ssl_certificate      /etc/pki/tls/certs/load_balance.crt;
    ssl_certificate_key  /etc/pki/tls/certs/load_balance.key;

    charset utf-8;

    location / {
        include proxy_params;
        proxy_pass http://app;
        proxy_redirect off;

        # Handle Web Socket connections
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
    }
}

调试日志fastcgi配置文件 ngix.conf nginx 文件

答案1

我同意 Sergey 的观点。很有可能是防火墙出了问题,导致某台服务器无法获得流量,从而导致 nginx 将其从可用服务器池中移除。

答案2

weight=1是默认配置,因此明确指定它或隐式删除和拥有它都不会产生任何区别。

总体而言,您的配置看起来正确。

尝试从上游列表中删除正在运行的服务器,只留下一个不起作用的服务器。我怀疑由于路由或防火墙问题,它根本无法工作。

答案3

虽然没有直接回答你的问题,但解决你的问题的更好方法是使用AWS 应用程序负载均衡器。它是一款功能相当齐全的负载均衡器,适用于从基本到标准的用例。如果您有任何非常具体的要求,您可能需要自行开发。

AWS ALB 是一种高可用性服务,没有单点故障,可跨多个可用区运行。这将使其比单个实例更可靠,并且与运行实例相比更具成本效益。有时它会花费更多,但你会从中受益。

答案4

降低权重=1,它应该可以工作

相关内容