Перейти к содержанию

limit-traffic-rate: NGINX Ограничение скорости по заданным переменным

Установка на Debian/Ubuntu

Эти документы относятся к APT пакету nginx-module-limit-traffic-rate, предоставляемому репозиторием GetPageSpeed Extras.

  1. Настройте APT репозиторий, как описано в настройке APT репозитория.
  2. Установите модуль:
sudo apt-get update
sudo apt-get install nginx-module-limit-traffic-rate
Показать версии и архитектуры
| Distro   | Suite             | Component   | Architectures   |
|----------|-------------------|-------------|-----------------|
| debian   | bookworm          | main        | amd64, arm64    |
| debian   | bookworm-mainline | main        | amd64, arm64    |
| debian   | trixie            | main        | amd64, arm64    |
| debian   | trixie-mainline   | main        | amd64, arm64    |
| ubuntu   | focal             | main        | amd64, arm64    |
| ubuntu   | focal-mainline    | main        | amd64, arm64    |
| ubuntu   | jammy             | main        | amd64, arm64    |
| ubuntu   | jammy-mainline    | main        | amd64, arm64    |
| ubuntu   | noble             | main        | amd64, arm64    |
| ubuntu   | noble-mainline    | main        | amd64, arm64    |

Заметки

Директива Nginx limit_rate может ограничивать скорость соединения, а limit_conn может ограничивать количество соединений по заданной переменной. Если клиент - это браузер, он открывает только одно соединение с сервером. Скорость будет ограничена до limit_rate, если только клиент не является многопоточным инструментом для загрузки.

ngx_http_limit_traffic_ratefilter_module предоставляет метод для ограничения общей скорости загрузки по IP-адресу клиента или URL-адресу загрузки, даже если имеется несколько соединений. Условие ограничения может быть задано с помощью следующей директивы.

Чтобы установить, скомпилируйте nginx с этой опцией ./configure:

--add-module=path/to/this/directory

Модуль limit_traffic_rate должен использовать общий пул памяти.

Синтаксис директивы аналогичен limit_zone

http {
    #limit_traffic_rate_zone   rate $request_uri 32m;
    limit_traffic_rate_zone   rate $remote_addr 32m;

    server {
        location /download/ {
            limit_traffic_rate  rate 20k;
        }
    }
}