Изменения в блоке if

skeletor nginx-forum на forum.nginx.org
Ср Сен 30 07:03:01 UTC 2020


Всем привет.
Начал замечать, что с недавних пор, (на версии 1.19.1 точно, и, скорее всего
на 1.17.Х) поведение if поменялось. При этом в документации (что en, что ru
- одинаково) сказано, что такая конструкция будет работать:

if ($slow) {
    limit_rate 10k;
}

но на практике нужно писать

if ($slow = 1) {
    limit_rate 10k;
}

иначе не работает.

Могу привести конкретный пример, где у меня не работает "упрощенный" (то
есть без сравнения с 1) if:

map $is_bot:$uri:$http_referer $very_bad {
         default '';
         "~*0:(\/api):(.*bad\.html)" '1';
         }

...
if ($very_bad = 1) {return 403;}

Именно так работает. Если же указать 

if ($very_bad) {return 403;}

то не работает.

Есть такие, у которых нормально работает "упрощённый" if на новых версиях?

Posted at Nginx Forum: https://forum.nginx.org/read.php?21,289612,289612#msg-289612



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