如何使用 nginx 对两个 URL 进行负载平衡?

如何使用 nginx 对两个 URL 进行负载平衡?

我有一个 python(flask) webapp。它可以通过前端的 nginx 访问。

假设,我的域名是:http://域名.com

我的网络应用程序正在运行http://127.0.0.1:5000

nginx配置:

upstream fapp {
        server 127.0.0.1:5000;
}

server {
    listen 80;
    server_name domain.com www.domain.com;

    location {                                                         
          proxy_set_header X-Forwarded-Host $host;                     
          proxy_set_header X-Forwarded-Server $host;                   
          proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 
          proxy_pass http://fapp/;                               
          proxy_intercept_errors on;                                   
    }
}

此应用程序有两个功能或路线:

  1. http://127.0.0.1/dataone/1
  2. http://127.0.0.1/datatwo/1

假设第一个页面会给出一些数据 ID 为 1 的图形细节,第二个页面会给出不包含任何图形视图的细节。

我想要的是如果我打了http://domain.com/data/1,nginx 会给我以下数据:http://127.0.0.1/dataone/1“ 或者 ”http://127.0.0.1/datatwo/1“。

我怎样才能做到这一点?

更新 1:根据@Oldskool 的线索,我确实查看了分割客户端模块。

    upstream fapp {
            server 127.0.0.1:5000;
    }


split_clients "${remote_addr}" $mydata {
        50%     "dataone";
        50%     "datatwo";
        *       "";
}


    server {
        listen 80;
        server_name domain.com www.domain.com;

        location {                                                         
              proxy_set_header X-Forwarded-Host $host;                     
              proxy_set_header X-Forwarded-Server $host;                   
              proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 
              proxy_pass http://fapp/;                               
              proxy_intercept_errors on;                                   
        }


location /data/ {
                proxy_set_header X-Forwarded-Host $host;
                proxy_set_header X-Forwarded-Server $host;
                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                proxy_pass http://fapp/${mydata}/;
                proxy_intercept_errors on;
}
}

但问题是如果我访问 http://domain.com/data/1或者 http://domain.com/data/35或者该号码上的任何内容不起作用,它会重定向到网址http://fapp/dataone/1或 35. 还有其他东西需要添加吗?或者我做错了吗?

相关内容