/bin/dev - IT Lounge

Полная версия: Простая настройка Nginx для защиты от DDoS медленными клиентами
Вы просматриваете упрощённую версию нашего контента. Просмотр полной версии с полным форматированием.
Эти несколько строк помогут немного снизить нагрузку на сервер, обрубив множество медленных клиентов, которые занимают канал. В моём случае netstat -nalt | grep :80 | wc -l говорил примерно о 1500 клиентах, зависших в статусе TIME_WAIT, и даже статика отдавалась очень медленно.

Эти настройки - всего лишь пример, для вашего сервера подбирайте свои лимиты.
Код:
http {
    limit_conn_zone $binary_remote_addr zone=conn_limit_per_ip:10m; # Ограничение на количество соединений с одного IP
    limit_req_zone $binary_remote_addr zone=req_limit_per_ip:10m rate=5r/s; # Ограничение на количество соединений в рамках одной сессии, максимальное количество - 5 запросов в секунду
}

server {
    location / {
        limit_conn conn_limit_per_ip 10;
        limit_req zone=req_limit_per_ip burst=10 nodelay;
    }
    client_body_timeout 5s; # Таймаут на получение тела запроса от клиента
    client_header_timeout 5s; # Таймаут на получение заголовков запроса от клиента
}