500 строк в секунду - это не мощно и, вероятно, даже не
DDoS. Если адрес один, то просто закройте ему доступ брандмауэром, а если адреса разные, то настройте лимит запросов в Nginx.
nginx.conf
http {
...
limit_req_zone $binary_remote_addr zone=reqlimit:10m rate=30r/s;
...
}
some_site.conf
server {
...
location / {
...
limit_req zone=reqlimit burst=10 nodelay;
}
}
После этого запросы с одного ip-адреса начиная с 31-го в секунду будут отбрасываться.
Как вишенку на торт, можно добавить ещё фильтр для fail2ban:
nginx-req-limit.conf
[Definition]
failregex = limiting requests, excess: .* by zone .*, client: <HOST>
ignoreregex =
и правило в jail.local
[nginx-req-limit]
enabled = true
port = http,https
filter = nginx-req-limit
logpath = /var/www/*/*/logs/error.log # Здесь укажите свой путь к логам виртуального хоста
findtime = 600
maxretry = 10
bantime = 7200
После этого адреса DoS'еров будут автоматически блокироваться брандмауэром на два часа. Что разгрузит Nginx от обработки паразитного трафика.