nginx负载均衡与网络重定向

时间:2018-01-16 16:45:27

标签: redirect nginx load-balancing

我正在寻找一种解决方案来使用nginx调度请求以优化主服务器的网络连接带宽(然后它应该将下载请求发送到其他一些服务器)。

以下是执行加载balacing的nginx示例的摘录:

upstream mystream {
    server ip1:port1;
    server ip2:port2;
}

server {
    listen       myport;
    location /  {
      proxy_pass http://mystream;
    }
}

此示例中的问题是主服务器看起来充当后台服务器的代理,然后不重定向客户端。 (它提供文件本身,然后不保存带宽)。

是否有办法配置nginx以将下载请求分派给后台服务器而不用作代理。 (保持URL可能很好,但如果需要,我可以重写它。)

由于

2 个答案:

答案 0 :(得分:0)

这就是反向代理的工作原理:

  

反向代理是一种代理服务器,它代表客户端从一个或多个服务器检索资源。然后将这些资源返回给客户端,就好像它们来自Web服务器本身一样。

一种可能的解决方案是配置上游服务器以向公众提供流量,然后将客户端重定向到那里。

答案 1 :(得分:0)

我终于发现split_clients是我案例的最佳解决方案,因为目标是在没有任何特定规则的情况下将客户端重定向到各个下载站点。

请注意,这是在更改URL,因此客户端将看到服务器URL(在我的情况下并不重要)。

使用此解决方案,客户端询问服务器:myport / abcd将根据MurmurHash2重定向到serverx:portx / abcd,请参阅http://nginx.org/en/docs/http/ngx_http_split_clients_module.html

split_clients "${remote_addr}" $destination {
  40%   server1:port1;
  30%   server2:port2
  20%   server3:port3;
  10%   server4:port4
}

server {
  listen       myport;
  location /  {
    return 302 http://$destination$request_uri;
  } 
}

<强>更新

如果要管理直接回复客户端的唯一URL和后台服务器而不进行任何URL分派,则可以使用直接路由模式下的Linux虚拟服务器配置负载平衡。 要进行配置,您可以管理Director VM&amp;几个真正的服务器&#34;向哪个请求透明地发送。见http://www.linuxvirtualserver.org/VS-DRouting.html