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