Я пытаюсь ограничить скорость загрузки статического файла, обслуживаемого через Nginx, до абсурдно медленных 13 байт в секунду. я нашел это limit_rate мог это сделать, поэтому я использовал его вместе с limit_conn чтобы было труднее обойти. Вот мой конфиг:
limit_conn_zone $binary_remote_addr zone=addr:100m;
server {
listen 80;
root /var/www/;
limit_rate_after 0;
limit_rate 13;
limit_conn addr 3;
limit_conn_status 429;
location / {
try_files /slow_file =404;
}
}
Это отлично работает для файлов длиной менее 4096 байт, при этом Nginx отправляет 13 байт каждую секунду. Однако, когда размер файла превышает этот размер, Nginx отправляет файл блоками по 4096 байт. В первую секунду Nginx отправляет 4096 байт, после чего ждет 315 секунд (4096/13), что технически соответствует ограничению скорости 13 байт в секунду, прежде чем снова отправить 4096 байт. Такое поведение нарушает мой вариант использования.
Есть ли способ заставить Nginx всегда вести себя так, как сейчас, для файлов размером менее 4096 байт? Как видите, этот веб-сервер обслуживает только один файл, поэтому мне не нужны побочные эффекты для других частей веб-сервера. Возможно, есть какая-то настройка, по умолчанию установленная на 4096, которую я мог бы уменьшить? В противном случае, что было бы другим способом реализации этого сверхмедленного ограничения скорости?