我将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文档,使用nginx plus是可以的。nginx plus文档您正在寻找的负载均衡方法是 最短的时间 方法,如果你使用的是默认的nginx,你可以使用
如果你使用的是默认的nginx,你可以使用 文档 nginx
tldr;