Тринарный оператор

Алферов Василий vasilii.alferov на gmail.com
Пн Мар 21 12:10:20 MSK 2011


Добрый день!

Хочу реализовать следующую схему для nginx:

если в запросе задан параметр $upstream = a.domain.tld, то направлять запрос
на этот апстрим
если параметра нет, то направлять на дефолтный.

Не посоветуете ли, как можно реализовать аналог тринарного оператора:

set $host = $arg_upstream ? $arg_upstream : $default_upstream;
proxy_pass $host



на ум приходит использование map:

map $upstream $host {
  hostnames;
  default $default_upstream;
  a.domain.tld ip.ad.dr.es1;
  b.domain.tld ip.ad.dr.es1;
  c.domain.tld ip.ad.dr.es1;
}
...
location / {
  set $upstream $arg_upstream;
  proxy_pass $host;
}

Но тут возникает вопрос - известен ли $arg_upstream в тот момент, когда
происходит proxy_pass?
----------- следущая часть -----------
Вложение в формате HTML было извлечено…
URL: <http://nginx.org/pipermail/nginx-ru/attachments/20110321/8ac7fe3c/attachment.html>


Подробная информация о списке рассылки nginx-ru