ПРОЕКТЫ 


  АРХИВ 


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: nginx-0.8.0



Hello!

On Wed, Jun 03, 2009 at 03:42:05PM +0300, Sergej Kandyla wrote:

> Maxim Dounin пишет:
>>> а если  "server_name   _"   для мультидоменного бекенда?
>>>
>>> server {
>>>        server_name   _ ;
>>>        location / {
>>>                proxy_pass              http://apache;
>>>        }
>>>    }
>>>
>>>
>>>
>>> как уже говорили, банить по IP слишком строго. Много невинных юзеров  
>>> страдают.
>>> Ограничить нужно только коннекты к виртуалхостам бекенда, т.е. чтобы  
>>> один конкретный IP не мог создать более чем (например) 10 коннкетов  
>>> к  любому из виртуалхостов.
>>>     
>>
>> Прочитайте доки внимательно.  Там где-то написано что в качестве  
>> переменной, по которой делается ограничение, можно использовать только 
>> ip и ничего больше?
>>   
>
> Правильно ли я понимаю, что
>
> server {
>       server_name   _ ;
>       limit_zone conn_to_server $server_name 10m;

Just a side note: limit_zone может быть только в контексте http.

>       location / {
>               proxy_pass              http://apache;
>               limit_conn conn_to_server 10;
>        }
>   }
>
>
> будет ограничивать запросы для данного  server_name, незивисо от   
> remote_addr ?
> т.е. получится на server_name max 10 сессий,

Да.  Только не надо забывать что server_name в данном случае будет 
всегда '_'.  Если задача ограничить именно на vhost бекенда - 
вероятно следует использовать $host.

> в то время как хочется для  
> данного server_name иметь максимум 10 сессий для remote_addr клиента.

А где написано, что в качестве переменной, по которой делается 
ограничение, можно использовать только встроенные переменные?

Кто мешает воспользоваться set и сделать нужную переменную?  
Как-то так:

    limit_zone  conn  $blah  10m;

    server {
        ...

        set  $blah  "$binary_remote_addr$host";

        location / {
            limit_conn  conn  10;
            proxy_pass ...
        }
    }

Maxim Dounin



 




Copyright © Lexa Software, 1996-2009.