Atualmente, estou gerenciando um site em que os usuários estão às vezes apressados sobre novos conteúdos e atualizam a página intensamente, levando a uma alta carga de servidor e, eventualmente, a uma falha.
Eu otimizei o site tanto quanto eu razoavelmente, adicionando cache do lado do servidor, modificação do UX, aumentando a capacidade do servidor, etc ... mas ainda não é suficiente.
Eu então descobri o ngx_http_limit_req_module que está fazendo o trabalho muito bem. Há um problema: os usuários provavelmente navegam no site de um lugar específico, o que significa um mesmo endereço IP. E, nesse caso, mesmo com um comportamento de navegação civilizado, a taxa limite será acionada.
Se possível, gostaria de identificar cada usuário especificamente para que a taxa de solicitação seja acionada somente quando um único usuário atualizar a página em demasia, mas não quando muitos usuários que usam o mesmo IP navegam no site normalmente.
A sintaxe da diretiva limit_req_zone é a seguinte:
limit_req_zone key zone=name:size rate=rate;
Atualmente, estou usando algo assim:
limit_req_zone $binary_remote_addr zone=one:10m rate=1r/s;
A documentação do módulo também adiciona estas informações:
The key can contain text, variables, and their combination. Requests
with an empty key value are not accounted.
e
Prior to version 1.7.6, a key could contain exactly one variable.
Tenho pouca ou nenhuma experiência com o Nginx, mas parece que pode haver alguma solução.
Daí minha pergunta: existe uma variável que poderia identificar usuários únicos, mesmo se eles compartilham o mesmo endereço IP?
Muito obrigado pela sua ajuda!