{{tag>nginx ddos}}

====== Nginx снижение нагрузки ======

===== Ограничение скорости запросов =====

<code>
limit_req_zone $binary_remote_addr zone=one:10m rate=30r/m;

server {
    ...
    location /login.html {
        limit_req zone=one;
    ...
    }
}
</code>

  * Требуется модуль [[http://nginx.org/ru/docs/http/ngx_http_limit_conn_module.html|ngx_http_limit_conn_module]]
===== Ограничение числа подключений =====

  * Синтаксис:	limit_conn зона число;
  * Умолчание:	—
  * Контекст:	http, server, location

<code>
limit_conn_zone $binary_remote_addr zone=addr:10m;

server {
    ...
    location /store/ {
        limit_conn addr 10;
        ...
    }
}
</code>

  * Требуется модуль [[http://nginx.org/ru/docs/http/ngx_http_limit_conn_module.html|ngx_http_limit_conn_module]]
===== Закрытие медленных соединений =====

<code>
server {
    client_body_timeout 5s;
    client_header_timeout 5s;
    ...
}
</code>

===== Блокирование IP-адресов =====

Блокирование по маске

<code>
location / {
    deny 123.123.123.0/28;
    ...
}
</code>

Блокирование списка адресов

<code>
location / {
    deny 123.123.123.3;
    deny 123.123.123.5;
    deny 123.123.123.7;
    ...
}
</code>

===== Белый список IP-адресов =====

<code>
location / {
    allow 192.168.1.0/24;
    deny all;
    ...
}
</code>

===== Ограничение подключений к бекенд серверам =====

<code>
upstream website {
    server 192.168.100.1:80 max_conns=200;
    server 192.168.100.2:80 max_conns=200;
    queue 10 timeout=30s;
}
</code>
