Назад | Перейти на главную страницу

nginx для кеширования выбора восходящего потока

Интересно, есть ли у кого-нибудь представление об этом.

Несколько http-клиентов запрашивают (GET) URL-адрес. Этот URL-адрес доступен ТОЛЬКО на одном из пяти серверов, и я не могу заранее знать, какой из них.

Обратите внимание, что «доступность» не зависит от самого URL-адреса, но зависит от http-заголовка запроса GET: фактически User-Agent содержит идентификатор клиента, и каждый отдельный клиент «зарегистрирован» только на одном из этих пяти серверы. Другие серверы ответят 404 на запрос от клиента, который они не «узнают» как свой.

Пока что я создал "сервер" nginx:

upstream backend {
    server be1:81;
    server be2:82;
    server be3:83;
    server be4:84;
    server be5:85;
}
server {
    listen       80;
    location / {
        proxy_pass http://backend;
        proxy_next_upstream error timeout http_404 non_idempotent;
        }
}

Это действительно работает (nginx пытается перенаправить запрос на все вышестоящие серверы, пока не найдет ответ 200 Ok).

Интересно, могу ли я улучшить производительность этого кеширования выбранного восходящего потока (не фактического результата http get, но который восходящий поток дал ответ 200OK) для данного User-Agent.