ПРОЕКТЫ 


  АРХИВ 


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: Ограничение количе ства одновременных соединений на сайт



On Fri, Feb 15, 2008 at 11:52:38AM +0300, Volkov Oleg wrote:

> nginx используется для отдачи статики и перенаправления запросов к apache для 
> обработки php скриптов. Хочется ограничить количество запросов к apache для 
> данного сайта.
> 
> worker_processes 20;
> events {
>         worker_connections  8192;
>         use epoll;
> }
> http {
>       ...
>         limit_zone one $binary_remote_addr 10m;
>         limit_conn one 64;
>         limit_zone too $http_host 10m;
>         upstream  apache0  {
>             ip_hash;
> ...
>       }
>       server {
>       ....
>       
>       location ~* ^(.+\.(php|html)|.*/)$ {
>               proxy_pass              http://apache0;
>               proxy_set_header        Host <ZZZ>;
>               proxy_set_header        X-Forwarded-For  
> $proxy_add_x_forwarded_for;
>               proxy_set_header        X-Real-IP  $remote_addr;
>               index                   index.php index.html;
>               limit_conn too 100;
>       }
>       location /  {
>               root   /data/<ZZZ>/htdocs;
>       }
>       server {
>       ...
>               limit_conn too 200;
>       ...
>       }
> }
> 
> Как более оптимально написать ограничения (для too)?
> 1. Смущает что limit_zone too $http_host 10m; явно не оптимальная запись. 
> Значение переменной $http_host может быть достаточно длинным - нет ли готовой 
> переменной, нумерующий виртуальные хосты? Или воткнуть внутрь каждой секции 
> server строчку типа set $server_number 1; (2,3,4,...) и использовать в хэше 
> too переменную $server_number вместо $http_host.
> 2. Как правильно вычислить размер хэша? Он зависит от количества одновременно 
> обрабатываемых значений или от количества уникальных значений переменной 
> $http_host ? Если второе, то стоит его уменьшить (количество всех алиасов 
> сайтов не более 100) ?

От одновременно обрабатываемых уникальных значений, но нужно учитывать,
что в $http_host могут влить что угодно. Лучше для этого использовать
$server_name - оно предсказуемо. Можно в качестве $server_name поставить
цифру:

      server_name_in_redirect off;

      server{
         server_name   1  host1.ru  alias.host1.ru;

      server{
         server_name   2  host2.ru;

$server_name 1/2/etc в этом случае будет фигурировать только в error_log.


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



 




Copyright © Lexa Software, 1996-2009.