Есть ли у кого-нибудь опыт ограничения скорости на сервере Nginx HTTPS, прослушивающем порт 443? Согласно моему тестированию, ограничение скорости работает хорошо, когда Nginx слушает порт 80, но я не получаю ожидаемых результатов с HTTPS.
Детали моего тестирования:
Для тестирования я настроил Nginx в качестве обратного прокси для моего внутреннего сервера. Nginx настроен как HTTPS-сервер, прослушивающий 443. У нас есть собственный инструмент, который передает настроенное количество HTTPS-запросов (один запрос на соединение) в Nginx и генерирует отчет в конце теста. В отчете указано, сколько запросов вернули статус 200 и сколько 503.
Наблюдение 1: Согласно моим наблюдениям для случая HTTPS, больше запросов обрабатывается со статусом возврата как 200, чем ожидалось, если скорость входных запросов в Nginx намного выше, чем настроенный предел скорости. Например, я протестировал следующую конфигурацию в Nginx для ограничения скорости:
limit_req_zone $host zone=perhost:1m rate=100r/s;
limit_req zone=perhost burst=100 nodelay;
Тест 1: с входом 250 запросов / сек и ограничением скорости, настроенным на 100 об / с, ограничение скорости работает как и ожидалось, поскольку в среднем ~ 100 запросов возвращаются с 200 статусами каждую секунду
Тест 2: при вводе 500 запросов / сек и ограничении скорости, настроенном на 100 об / сек, ограничение скорости не работает как и ожидалось, поскольку в среднем ~ 150 запросов возвращаются с 200 статусами каждую секунду
Test3: при вводе 600 запросов / сек и ограничении скорости, настроенном на 100 об / сек, ограничение скорости не работает как и ожидалось, так как в среднем ~ 200 запросов возвращаются с 200 статусами каждую секунду
Test4: при вводе 800 запросов / сек и ограничении скорости, настроенном на 100 об / сек, ограничение скорости не работает как и ожидалось, поскольку в среднем ~ 350 запросов возвращаются с 200 статусами каждую секунду
Наблюдение 2: С другой стороны, если Nginx настроен как HTTP-сервер, прослушивающий 80, функция ограничения скорости кажется работает отлично за те же тесты.
Я не уверен, что по-другому происходит при тестировании на основе HTTPS. Одно наблюдение, которое я сделал, заключается в том, что с HTTP запросы обрабатываются очень быстро, тогда как для HTTPS полная транзакция занимает относительно больше времени. Кроме того, при низкой скорости ввода HTTPS-запросов завершение транзакции не занимает много времени, тогда как при увеличении скорости ввода эта задержка увеличивается, а затем начинает действовать неожиданное ограничение скорости. Может ли это быть как-то причиной такой разницы?
Кто-нибудь знает об этом поведении?