Re[2]: Вложенные if директивы

Vyacheslav Kokorin slava at peterhost.ru
Tue Sep 27 09:52:15 MSD 2005


Здравствуйте, 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



More information about the nginx-ru mailing list