Nginx ограничивает скорость загрузки

Я использую Nginx в качестве обратного прокси.
Как ограничить скорость загрузки в Nginx?

1 ответ

Решение

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

Вот конфигурация для ограничения скорости загрузки

  • найди свой каталог /etc/nginx/nginx.conf
      user www-data;
worker_processes auto;
pid /run/nginx.pid;

events {
    worker_connections 1;
}

# 1)
# Add a stream
# This stream is used to limit upload speed
stream {

    upstream site {
        server your.upload-api.domain1:8080;
        server your.upload-api.domain1:8080;
    }

    server {

        listen    12345;

        # 19 MiB/min = ~332k/s
        proxy_upload_rate 332k;

        proxy_pass site;

        # you can use directly without upstream
        # your.upload-api.domain1:8080;
    }
}

http {

  server {
    
    # 2)
    # Proxy to the stream that limits upload speed
    location = /upload {
        
        # It will proxy the data immediately if off
        proxy_request_buffering off;
        
        # It will pass to the stream
        # Then the stream passes to your.api.domain1:8080/upload?$args
        proxy_pass http://127.0.0.1:12345/upload?$args;
   
    }

    # You see? limit the download speed is easy, no stream
    location /download {
        keepalive_timeout  28800s;
        proxy_read_timeout 28800s;
        proxy_buffering off;

        # 75MiB/min = ~1300kilobytes/s
        proxy_limit_rate 1300k;

        proxy_pass your.api.domain1:8080;
    }

  }

}

Если ваш Nginx не поддерживает stream.
Возможно, вам потребуется добавить модуль.

статический:

  • $ ./configure --with-stream
  • $ make && sudo make install

динамичный

Примечание: если у вас есть клиент, такой как HAProxy, и Nginx в качестве сервера.
Вы можете столкнуться 504 timeout в HAProxy и 499 client is closeв Nginx при загрузке больших файлов с ограничением низкой скорости загрузки.
Вам следует увеличить или добавить timeout server: 605sили более в HAProxy, потому что мы хотим, чтобы HAProxy не закрывал соединение, пока Nginx загружает данные на ваш сервер. /questions/5931483/kodyi-oshibok-nginx-499/5931503#5931503

Некоторые ссылки:


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


Отблагодаришь позже ;)

Другие вопросы по тегам