Nginx反向代理:并行尝试多个上游服务器,并返回第一个成功的响应。

问题描述 投票:0回答:1

我将nginx配置为下载软件工件(如JAR文件)的反向代理,并希望通过将每个请求并行代理到多个上游服务器来加快下载速度。

目前的工作情况如下:当nginx运行在localhost:8080时,我请求 localhost:8080/com/foo/bar.jar,nginx会连续检查该文件。com/foo/bar.jar 在预先配置的列表中的每台主机上(如 repo1.org/com/foo/bar.jar, repo2.org/com/foo/bar.jar等),并返回第一个匹配的工件(即第一个返回状态200的工件)。

下面的配置使得这个功能在maven.org和osgeo.org的仓库中可以使用。

events {}
http {
    server {
        listen 8000;
        location / {
            proxy_pass https://repo1.maven.org/maven2/;
        }
    }
    server {
        listen 8001;
        location / {
            proxy_pass https://repo.osgeo.org/repository/release/;
        }
    }
    upstream repositories {
        server localhost:8000;
        server localhost:8001;
    }
    server {    
        location / {
            proxy_next_upstream error timeout http_404;
            proxy_pass http://repositories;
        }
    }
}

为了减少延迟,我想让nginx并行运行这些请求,返回第一个返回200的请求,否则返回错误代码404。

我不知道哪些指令(如果有的话)可以实现这种行为。如果有任何提示,我将不胜感激。

nginx reverse-proxy nginx-reverse-proxy nginx-upstreams
1个回答
0
投票

根据nginx文档,使用nginx plus是可以的。nginx plus文档您正在寻找的负载均衡方法是 最短的时间 方法,如果你使用的是默认的nginx,你可以使用

如果你使用的是默认的nginx,你可以使用 文档 nginx

tldr;

  • 默认负载均衡配置(Round Robin)
  • 连接最少的负载均衡
  • 加权负载平衡
  • 会话持久性
© www.soinside.com 2019 - 2024. All rights reserved.