Я хотел бы настроить nginx как балансировщик нагрузки. Но я хочу настроить его таким образом, чтобы определенные запросы (с определенным параметром) переходили только к определенным узлам. В основном идея состоит в том, чтобы использовать любой хост на исходном запросе, затем, если пользователь задает определенный параметр, например. bla0, а затем перенаправить запросы на проведение 0, в то время как для bla1 пройдет 1. Так вот конфигурация, которую я придумал:nginx load balancer/location puzzle
# load balancing server
server {
listen 8000;
server_name example.com www.example.com;
# requests to bla0 server
location ~ ^(/request).*bla0$ {
proxy_pass http://localhost:8081;
}
# requests to bla1 server
location ~ ^(/request).*bla1$ {
proxy_pass http://localhost:8082;
}
# for default location use balancer
location/{
proxy_pass http://cluster;
}
}
upstream cluster {
server localhost:8081;
server localhost:8082;
}
Но, к сожалению, эта конфигурация не работает. Я всегда получаю круговые запросы, т. Е./Запрос? Q = bla0 переходит на любой из хостов. Что мне не хватает.
Отличный совет, это то, что я искал. Таким образом, правила местоположения становятся такими: location/{proxy_pass http: // cluster; if ($ args ~ pattern1) {proxy_pass http: // host1} if ($ args ~ pattern2) {proxy_pass http: // host2}} – Valentin