ПРОЕКТЫ 


  АРХИВ 


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[2]: Вложенные if директивы



Здравствуйте, Igor!

Monday, September 26, 2005, 8:35:59 PM, you wrote:

IS> On Fri, 23 Sep 2005, Anton Ageev wrote:

>> Хочется сделать проверку хедера REFERER, но только для посетителей с
>> зарубежным ip. mod_geo пишет 1 для зарубежных ip-адресов в переменную
>> $foreign.
>> При попытке написать такую конструкцию:
>>
>> valid_referers   none  blocked  server_names;
>> if ($foreign)
>> {
>>   if ($invalid_referers)
>>   {
>>      return 200;
>>   }
>> }
>>
>> nginx -t выдает:
>> 2005/09/23 13:21:23 [emerg] 27912#0: directive "if" in 
>> /usr/local/etc/nginx/nginx.conf:78 is not allowed here
>>
>> 78-я строка - это вложенный if.
>>
>> Проверялось на nginx 1.41
>>
>> Как я понимаю ни вложенные директивы if, ни логические условия в
>> выражениях для if не поддерживаются ?
>> Как можно решить такую ситуацию ?

IS> Пока - никак.

По-моему, можно work-around-ом сделать...

valid_referers   none  blocked  server_names;
location / {
  if ($foreign)
   {
     rewrite ^.*$ /check_referer;
   }
   return 403;
}
location /check_referer {
    if ($invalid_referers)
    {
       return 200;
    }
    return 403;
}

Это придумано с ходу, не проверялось.






IS> Игорь Сысоев
IS> http://sysoev.ru



-- 
С уважением, Вячеслав Кокорин
Системный администратор хостинга PeterHost.Ru
Тел: (812) 34-777-43
     (095) 540-56-33
http://www.PeterHost.Ru





 




Copyright © Lexa Software, 1996-2009.