Фильтрация http и syn флуда средствами nginx

Включаем фильтрацию синфлуда ядром — в файле /etc/sysctl.conf правим/добавляем

net.ipv4.netfilter.ip_conntrack_max=1548576
net.ipv4.tcp_syncookies=1

sysctl -p

В /etc/nginx/nginx.conf добавляем как то так

http {
 limit_conn_zone $binary_remote_addr zone=perip:10m;
 limit_conn perip 4;
 limit_req_zone $binary_remote_addr zone=one:10m rate=10r/m;
...
server {
 server_name lalala.com;
...
 location / {
 limit_req zone=one burst=6 nodelay;
...
 location @fallback {
 limit_req zone=one burst=6 nodelay;
...

service nginx restart

Смотрим сколько запросов пролезло в nginx и SYN пакетов в секунду примерно так

tail -f /var/log/nginx/access.log | pv -lr -i 10 >/dev/null
tcpdump "tcp[tcpflags] & tcp-syn != 0" | pv -lr -i 10 >/dev/null