не срабатывает if в location
Dobrozhansky Sergey
invisible на invisible.od.ua
Пт Май 6 19:29:52 MSD 2011
Имею следуюзий конфиг:
map $http_user_agent $players {
default 1;
"~mplayer|vlc|nsplayer" 0;
}
server {
location /pl/ {
if ($players) {
return 444;
}
location ~ ^/pl/([0-9]+)$ {
proxy_pass http://127.0.0.1:4026/$1;
}
location ~ ^/pl/([0-9]+)$ {
proxy_pass http://127.0.0.1:4026/$1;
}
}
}
Если if ($players) { return 444; } расположен внутри location /pl/, то
он не срабатывает.
Если его вынести из location /pl/ - работает.
Вот пример рабочего конфига:
server {
if ($players) {
return 444;
}
location /pl/ {
location ~ ^/pl/([0-9]+)$ {
proxy_pass http://127.0.0.1:4026/$1;
}
location ~ ^/pl/([0-9]+)$ {
proxy_pass http://127.0.0.1:4026/$1;
}
}
}
Версия nginx-1.0.1.
Подробная информация о списке рассылки nginx-ru