Интересно, есть ли у кого-нибудь представление об этом.
Несколько 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.