Ответы пользователя по тегу Компьютерные сети
  • Как имитировать медленное соединение, Mac OS localhost?

    GeorgeTudosi
    @GeorgeTudosi Автор вопроса
    Технический директор, кинематографист, яхтсмен
    Всё оказалось довольно просто, хотя и не очевидно. Раз уж используем nginx, можно применить его магию, верно? Заодно не придется каждый раз отключать замедлитель для внешних ресурсов.

    Фрагмент nginx.conf:

    http {
        server {
            listen 8080;
            limit_rate 1M;
        }
    }
    stream {
        server {
            listen 80;
            proxy_upload_rate 1M;
            proxy_pass 127.0.0.1:8080;
        }
    }


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

    Основной сервер унесен на порт 8080, и там происходит вся обработка запросов. limit_rate 1M; — это ограничение скорости отдачи ответа клиенту, и оно срабатывает в любом случае.

    Подключаемся к разрабатываемому приложению через порт 80 (если вам нужно https, то 80 заменить на 443), то есть в браузере порт не указываем — для клиента всё выглядит в точности как обычно. А nginx отправляет запрос на порт 8080 с ограничением скорости proxy_upload_rate 1M;. Можно, разумеется, использовать и другой подходящий свободный порт.

    Если надо ограничивать скорость только в особых случаях, а обычно удобнее иметь неограниченную скорость, можно слушать в блоке stream любой свободный порт, а в блоке http продублировать server с теми же параметрами, но без limit_rate и с «обычным» портом.

    Всё работает вполне четко. Следует здесь только заметить, что скорость указывается в байтах в секунду, а не в битах в секунду, как мы привыкли применительно к толщине канала. Можно произвольно и независимо ограничивать скорость приема и отдачи, что может быть полезно для имитации асимметричных подключений.

    Способ применим не только для MacOS, будет работать в любой системе, если вы используете nginx.
    Ответ написан
    Комментировать