# Описание зон ограничения количества запросов #Используем переменную NGINX $binary_remote_addr, которая содержит двоичное представление IP-адреса клиента. #Это означает, что мы ограничиваем каждый уникальный IP-адрес частотой запросов, определенной третьим параметром rate. #(Используем эту переменную, потому что она занимает меньше места, чем строковое представление IP-адреса клиента, $remote_addr). #Информация о состоянии примерно для 16 000 IP-адресов занимает 1МБайт, #поэтому созданная зона может хранить около 160 000 адресов. #Тут частота не может превышать 10 запросов в секунду 10 request/second. #NGINX фактически отслеживает запросы с точностью до миллисекунды, #поэтому этот предел соответствует 1 запросу каждые 100 миллисекунд (мс). #Запрос отклоняется, если он поступает менее чем через 100 мс после предыдущего разрешенного. limit_req_zone $binary_remote_addr zone=global_limits:10m rate=10r/s; #Директива limit_req_zone задает параметры ограничения скорости и зоны общей памяти, #но на самом деле не ограничивает скорость запросов. Для этого нужно применить ограничение #к определенному блоку location или server, включив туда директиву limit_req. #Например # server { # location /login/ { # limit_req zone=mylimit; # proxy_pass http://my_upstream; # } # }