Nginx-ru mailing list archive (nginx-ru@sysoev.ru)
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Ограничение количества одновременных соединений на сайт
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) ?
Что посоветуете ?
---
С уважением, Волков Олег.
|