На сервере с Centos7 и nginx/1.16.1 попробовал включить ограничение скорости для видео через limit_rate. Поиском в интернете увидел что такой метод используется как простой вариант ограничения что меня вполне устраивает.
Я даже взял готовый пример использования. Но у меня это не сработало, абсолютно не понимаю почему. Проверка конфигурации nginx -t ошибок не выдает но ограничение не срабатывает.
Это я добавил в основной конфиг nginx:
limit_conn_zone $binary_remote_addr zone=addr:10m;
Это в конфиг конкретного домен:
location ~* /videos/ {
limit_conn addr 10;
limit_rate_after 500k;
limit_rate 150k;
proxy_buffering on;
}
Посмотрел документацию nginx, вроде в конфиге я все верно написал. Тогда почему не работает?
Ставить nginx_limit_speed_module не хочу. Он совсем старый и я не уверен что он совместим с новым nginx. Да и он может также не заработать если даже стандартная директива nginx не работает.
Может уже сталкивались с таким? В чем может быть проблема?
Eduard Lisetskiy, локейшены с регулярными выражениями проверяются в порядке их следования в конфигурационном файле. Проверка регулярных выражений прекращается после первого же совпадения, и используется соответствующая конфигурация. Так что расположение локейшенов может влиять.
Запрос /videos/file.mp4 совпадёт с шаблоном ^.+\.(mp4) и дальше проверка регулярных выражений прекращается. Запрос не сможет попасть в location ~* /videos/
Покажите весь конфиг может там что-то подобное и запрос просто не попадает location ~* /videos/
dodo512, Я только утром, на свежую голову, смог понять что вы хотели сказать ранее. А этим новым вашим ответом вы очень хорошо объяснили все. Спасибо, вы очень помогли мне! Да и не только мне, я пока искал ответ, нашел несколько подобных безответных вопросов.