@elias_steuber
Для ограничения скорости передачи данных в Nginx необходимо использовать модуль ngx_http_limit_conn_module и/или ngx_http_limit_req_module. Эти два модуля различаются по тому, как они ограничивают доступ к ресурсам.
ngx_http_limit_conn_module ограничивает количество подключений к серверу за определенный промежуток времени. Например, можно ограничить количество подключений до 10 за 1 минуту. Для этого можно использовать следующую директиву:
1 2 3 4 5 6 7 8 9 |
http { limit_conn_zone $binary_remote_addr zone=addr:10m; server { location / { limit_conn addr 10; ... } } } |
Здесь мы создаем зону «addr» и ограничиваем количество подключений с IP-адреса до 10 в каждый момент времени.
ngx_http_limit_req_module ограничивает количество запросов к серверу за определенный промежуток времени. Например, можно ограничить количество запросов до 100 за 1 минуту. Для этого можно использовать следующую директиву:
1 2 3 4 5 6 7 8 9 |
http { limit_req_zone $binary_remote_addr zone=one:10m rate=10r/s; server { location / { limit_req zone=one burst=20 nodelay; ... } } } |
Здесь мы создаем зону «one» и устанавливаем частоту ограничения в 10 запросов в секунду, а также максимальный размер буфера в 20 запросов. Также мы указываем параметр nodelay, который позволяет серверу отклонять запросы сверх ограничений, а не откладывать их для обработки в будущем.
Оба этих модуля могут использоваться одновременно для решения различных задач по ограничению скорости передачи данных в Nginx.