0

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

以下当前有效:在 nginx 在 localhost:8080 运行时,我请求,nginx在预先配置的列表(例如,等)中localhost:8080/com/foo/bar.jar串行检查每个主机上的文件,并返回第一个匹配的工件(即首先返回状态 200)。com/foo/bar.jarrepo1.org/com/foo/bar.jarrepo2.org/com/foo/bar.jar

下面的配置使这项工作适用于 maven.org 和 osgeo.org 上的 repos:

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。

我不确定哪些指令(如果有)可以启用这种行为。我很感激任何提示。

4

1 回答 1

0

根据 nginx 文档,可以使用 nginx plus。如nginx plus 文档中所述,您正在搜索的负载平衡方法是最少时间方法。

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

tldr;

  • 默认负载均衡配置(循环)
  • 最少连接负载均衡
  • 加权负载均衡
  • 会话持久性
于 2020-05-02T07:02:45.227 回答