ПРОЕКТЫ 


  АРХИВ 


Apache-Talk @lexa.ru 

Inet-Admins @info.east.ru 

Filmscanners @halftone.co.uk 

Security-alerts @yandex-team.ru 

nginx-ru @sysoev.ru 


  СТАТЬИ 


  ПЕРСОНАЛЬНОЕ 


  ПРОГРАММЫ 



ПИШИТЕ
ПИСЬМА












     АРХИВ :: nginx-ru
Nginx-ru mailing list archive (nginx-ru@sysoev.ru)

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: не срабатывает if в location



On Fri, May 06, 2011 at 06:29:52PM +0300, Dobrozhansky Sergey wrote:
> Имею следуюзий конфиг:
> 
> 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 сначала ищет location, а потом выполняет в нём "if".

Здесь
                  location ~ ^/pl/([0-9]+)$      {
                          proxy_pass http://127.0.0.1:4026/$1;
                  }

регулярное выражение не нужно:

                  location /pl/      {
                          proxy_pass http://127.0.0.1:4026/;
                  }


-- 
Igor Sysoev

_______________________________________________
nginx-ru mailing list
nginx-ru@xxxxxxxxx
http://nginx.org/mailman/listinfo/nginx-ru


 




Copyright © Lexa Software, 1996-2009.