32 lines
2.1 KiB
Plaintext
32 lines
2.1 KiB
Plaintext
# Описание зон ограничения количества запросов
|
||
|
||
#Используем переменную 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;
|
||
# }
|
||
# }
|
||
|
||
limit_req_zone $binary_remote_addr zone=global_limits:10m rate=20r/s; |