nginx vs DDoS: accept-фильтры во FreeBSD

Вот что пишет о механизме accept-фильтров автор web-сервера nginx Игорь Сысоев:

Два года назад во FreeBSD появились accept-фильтры. Они позволяют не передавать в accept() пришедшее соединение до тех пор, пока не придёт первый пакет с данными (фильтр dataready) или заголовок HTTP-запроса (фильтр httpready). Использование фильтров в Apache (а в нём они поддерживаются, начиная с версии 1.3.14) позволяет уменьшить число процессов. В серверах, использующих select(), poll() или kqueue(), например, в thttpd-2.22, фильтры уменьшают число открытых файлов. И наконец, в обоих случаях accept-фильтры уменьшают число переключений контекста процесса.

Таким образом, использование данного инструментария позволить перенести обработку части запросов в ядро и снизить общую загрузку сервера.Задействуем фильтр HTTP READY. Добавляем загрузку соответствующего модуля ядра в /boot/loader.conf

accf_http_load=YES

И загружаем сам модуль.

#kldload accf_http

Добавляем параметр accept_filter к директиве listen в файле конфигурации nginx.

listen 1.2.3.4:80 default sndbuf=16k rcvbuf=8k accept_filter=httpready;

И намекаем nginx о необходимости перегрузить конфиг:

#/usr/local/etc/rc.d/nginx reload

См. также первую статью цикла.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *