Покупая недорогой хостинг для сайтов с небольшим трафиком, вы рискуете стать жертвой поисковых роботов или чего-то подобного, то есть ресурс не выдержит аномальной пиковой нагрузки. Чтобы это недопустить, я опишу несколько методик.
Ограничиваем по количеству обращений при помощи iptables:
# create a new chain for rate limiting -N LIMITED # rate limit individual ips to prevent stupidity -I INPUT -p tcp --dport 80 -m state --state NEW -m recent --set -I INPUT -p tcp --dport 443 -m state --state NEW -m recent --set -I INPUT -p tcp --dport 80 -m state --state NEW -m recent --update --seconds 10 --hitcount 5 -j LIMITED -I INPUT -p tcp --dport 443 -m state --state NEW -m recent --update --seconds 10 --hitcount 5 -j LIMITED # log rejected ips -A LIMITED -p tcp -m limit --limit 5/min -j LOG --log-prefix "Rejected TCP: " --log-level 7 -A LIMITED -j REJECTСпособ плохо тем, что адрес пользователя просто заблокирует и он будет видеть, что ресурс просто пропал. Но это довольно действенно ;)
Ограничиваем по количеству обращений при помощи nginx:
limit_req_zone $binary_remote_addr zone=26req:10m rate=36r/s; limit_conn_zone $binary_remote_addr zone=perip:10m; limit_conn_zone $server_name zone=perserver:10m; limit_req_status 429; limit_req_log_level warn; server { ... limit_req zone=26req burst=54; limit_conn addr 1; # обрабатывать не более одно соединения с одного ип limit_conn perip 4; # обрабатывать не более одно соединения с одного ип limit_conn perserver 80; # не более 80 подключений на сервер ... } }
Комментарии (0)