Обратный прокси-сервер Nginx: попробуйте несколько восходящих серверов параллельно и верните первый успешный ответ

Я настроил 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.

Я не уверен, какие директивы (если есть) могут включить такое поведение. Я ценю любые советы.

1 ответ

Согласно документации nginx, можно использовать nginx plus. Как указано в документации nginx plus, метод балансировки нагрузки, который вы ищете, - это метод наименьшего времени.

Если вы используете nginx по умолчанию, вы можете использовать документацию nginx

tldr;

  • Конфигурация балансировки нагрузки по умолчанию (Round Robin)
  • Балансировка нагрузки с наименьшим количеством подключений
  • Взвешенная балансировка нагрузки
  • Сохранение сеанса
Другие вопросы по тегам