30Дек/090

Nginx – логические операторы «И», «ИЛИ»

Как написать location в nginx, который срабатывает, если два условия должны выполняться. Логично было бы написать так:

if ($http_user_agent ~* "Opera" AND $http_referer ~* "yandex.ru") {
bla bla bla
}

nginx не предусматривает в условиях логические операторы
Решение есть в виде хака:

set $a "";
if ($http_user_agent ~* "Opera" ) {
set $a 1;
}
if ($http_referer ~* "yandex.ru") {
set $a 1$a;
}
if ($a = 11) {
bla bla bla
}

Идея очень проста, создается переменная, в которую по мере срабатывания условий накапливается строка. Далее срабатывает какое-либо условие с учетом этой строки.

Может man читал не внимательно и кто-то подскажет более красивое решение этой проблемы?

Комментарии (0) Пинги (0)

Пока нет комментариев.


Оставить комментарий


Нет обратных ссылок на эту запись.