Alguém tem experiência com limitação de taxa no servidor Nginx HTTPS na porta 443? De acordo com o meu teste, a limitação de taxa parece funcionar bem com o Nginx escutando na porta 80, mas não consigo obter resultados esperados com HTTPS.
Os detalhes dos meus testes:
Para o teste, configurei o Nginx como um proxy reverso para o meu servidor de back-end. O Nginx é configurado como servidor HTTPS escutando no 443. Temos uma ferramenta proprietária que alimenta o número configurado de solicitações HTTPS (uma solicitação por conexão) para o Nginx e gera um relatório no final do teste. O relatório lista quantas solicitações retornaram o status 200 e quantas 503.
Observação 1: Conforme minhas observações para o caso HTTPS, mais solicitações são processadas com o status de retorno como 200 do que o esperado, se a taxa de solicitação de entrada para Nginx for muito maior do que o limite de taxa configurado. Por exemplo, testei a seguinte configuração no Nginx para limitar a taxa:
limit_req_zone $host zone=perhost:1m rate=100r/s;
limit_req zone=perhost burst=100 nodelay;
Teste1: Com entrada como 250 req / seg e limite de taxa configurado em 100r / s, a taxa limitando funciona como esperado, pois em média ~ 100 solicitações retornam com 200 status a cada segundo
Teste2: Com entrada como 500 req / seg e limite de taxa configurado em 100r / s, a taxa limite não funciona como esperado, pois em média ~ 150 solicitações retornam com 200 status a cada segundo
Teste3: Com entrada como 600 req / se limite de taxa configurado em 100r / s, a taxa limite não funciona como esperado, pois em média ~ 200 solicitações retornam com 200 status a cada segundo
Teste4: Com entrada como 800 req / se limite de taxa configurado em 100r / s, a taxa limite não funciona como esperado, pois em média ~ 350 solicitações retornam com 200 status a cada segundo
Observação 2: Por outro lado, se o Nginx estiver configurado como servidor HTTP ouvindo em 80, o recurso de limitação de taxa parece estar funcionando bem para os mesmos testes.
Não sei ao certo o que acontece de forma diferente para testes baseados em HTTPS. Uma observação que fiz é que, com HTTP, as solicitações são processadas muito rapidamente, enquanto que as transações concluídas com HTTPS demoram relativamente mais tempo. Além disso, com baixa taxa de entrada de solicitações HTTPS, a conclusão da transação não está demorando muito, enquanto que, quando a taxa de entrada aumenta, esse atraso aumenta e a limitação da taxa começa a se comportar de forma inesperada. Esta pode ser a causa dessa diferença de alguma forma?
Alguém tem alguma ideia sobre esse comportamento?
Tags nginx rate-limiting