nginx 负载平衡 - 我是否必须拥有 API 的多个副本?

nginx load balancing - do I have to have multiple copies of my API?

我想使用 NGINX

对我的 Parse API 进行负载平衡

我的 API 当前在一台服务器上的 nginx 上运行,如果我想对其进行负载平衡,我是否必须在每台主机上托管我的 API?

我希望它看起来像这样

----------                             /----- [ api-0.myhost.com ]
| client | --------> [ api.myhost.com ] ----- [ api-1.myhost.com ]
----------                             \----- [ api-2.myhost.com ]

在这种情况下,我是否必须安装 nginx 并将我的 API 部署到非常 api-X.myhost.com

或者我只是在 api.myhost.comapi-X.myhost.com 上部署我的 API 我只是安装 nginx?

您只需在 api.host.com 上安装 nginx,然后配置 nginx 以实现负载平衡,如下所示:

upstream api-app {
              least_conn;
              server api-0.myhost.com:port weight=1 max_fails=1;
              server api-2.myhost.com:port weight=1 max_fails=1;
              server api-3.myhost.com:port weight=1 max_fails=1;   

        }

        server {
              listen 80;
              listen  443 ssl;
              server_name api.myhost.com;



              ssl_certificate /etc/ssl/certs/api_ssl-bundle.crt;
              ssl_certificate_key /etc/ssl/private/api_com.key;

              client_max_body_size 2000M;
              large_client_header_buffers 32 128k;
              location / {
               proxy_set_header X-Real-IP $remote_addr;
               proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

                proxy_buffers 64 128k;
                proxy_buffer_size 256k;
                proxy_pass http://api-app;
                proxy_connect_timeout   1200;
                proxy_send_timeout      1200;
                proxy_read_timeout      1200;
                proxy_http_version 1.1;
                proxy_set_header Upgrade $http_upgrade;
                proxy_set_header Connection "";
                proxy_set_header Host $host;
                proxy_cache_bypass $http_upgrade;
              }
        }

port 是您的 api-app 在其主机上侦听的端口。