我已将 nginx 配置为下载软件工件(例如 JAR 文件)的反向代理,并希望通过将每个请求并行代理到多个上游服务器来加速它。
以下当前有效:在 nginx 在 localhost:8080 运行时,我请求,nginx在预先配置的列表(例如,等)中localhost:8080/com/foo/bar.jar
串行检查每个主机上的文件,并返回第一个匹配的工件(即首先返回状态 200)。com/foo/bar.jar
repo1.org/com/foo/bar.jar
repo2.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。
我不确定哪些指令(如果有)可以启用这种行为。我很感激任何提示。