Nginx — правильное ограничение отдачи?

В интернете много информации по поводу ограничения скорости отдачи, но
1. Модуль nginx_limit_speed_module использовать не хочу, потому что не хочется каждый раз пересобирать nginx для обновления.
2. Использовать limit_rate либо set $limit_rate получается только в рамках директивы server, либо http. В общем получается ограничить скорость либо на весь сервер, либо на весь домен.
3. Согласно документации, set $limit_rate должна ограничивать не в рамках 1 запроса, а в рамках всего клиента. В любом случае так же не работает.

Мне необходимо его использовать в директиве location, например тут location /soft/, как указано ниже... но эта зараза не хочет работать, почему? Что я не правильно сделал?

Версия NGINX 1.16.1
Пробовал и просто limit_rate и set $limit_rate

server {
  listen 80;
  server_name www.ustim.ru ustim.ru;
  charset UTF-8;

        root /var/www/ustim.ru/htdocs/;
        include /etc/nginx/templates/php-fpm7.3.conf;
        index index.html index.htm index.php;

        location /app.php {
                try_files $uri $uri/ /app.php?$query_string;
        }
        location /install/app.php {
                try_files $uri $uri/ /install/app.php?$query_string;
        }
        location / {
            try_files $uri $uri/ /index.php?$args;
        }

#Доступ к папке /soft (без пароля)
   location /soft/ {
        alias /mnt/fs-soft/;
        autoindex on;
        autoindex_exact_size off;
        autoindex_localtime on;
        dav_access user:rw group:rw all:rw;
        dav_methods PUT DELETE MKCOL COPY MOVE;
        create_full_put_path on;
        set $limit_rate 200K;
   }
        access_log /var/log/nginx/ustim.ru_access.log;
        error_log /var/log/nginx/ustim.ru_error.log;

        listen 443 ssl; # managed by Certbot
        ssl_certificate /etc/letsencrypt/live/ustim.ru/fullchain.pem; # managed by Certbot
        ssl_certificate_key /etc/letsencrypt/live/ustim.ru/privkey.pem; # managed by Certbot
        ssl_session_cache shared:le_nginx_SSL:1m; # managed by Certbot
        ssl_session_timeout 1440m; # managed by Certbot

        ssl_protocols TLSv1 TLSv1.1 TLSv1.2; # managed by Certbot
        ssl_prefer_server_ciphers on; # managed by Certbot

        ssl_ciphers "ECDHE-ECDSA-AES128-GCM-SHA256 ECDHE-ECDSA-AES256-GCM-SHA384 ECDHE-ECDSA-AE$

    if ($scheme != "https") {
        return 301 https://$host$request_uri;
    } # managed by Certbot
}
  • Вопрос задан
  • 568 просмотров
Пригласить эксперта
Ответы на вопрос 2
Oxyd
@Oxyd
Linux enthusiast
Может быть всё дело в том что...

Ограничение устанавливается на запрос, поэтому, если клиент одновременно откроет два соединения, суммарная скорость будет вдвое выше заданного ограничения.

А про переменную так и вовсе сказано...

Ограничение скорости можно также задать в переменной $limit_rate, однако начиная с 1.17.0 использовать данный метод не рекомендуется

© Официальная документация.
Ответ написан
ky0
@ky0 Куратор тега Nginx
Миллиардер, филантроп, патологический лгун
Модуль nginx_limit_speed_module использовать не хочу, потому что не хочется каждый раз пересобирать nginx для обновления.

ССЗБ. Добро пожаловать в дивным мир опенсорса, где собирание пакета руками - это не что-то страшное и регулярно происходящее.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы