Programaticamente bloqueando um URL para limitar o limite, desbloquear ou expirar o bloco

2

Minhas exigências são poder limitar o limite ou bloquear temporariamente quaisquer solicitações ao nosso servidor para uma determinada URL se o cliente enviar mais de x solicitações por hora.

Existem cerca de 250 mil URLs que podem potencialmente ser bloqueados.

Os clientes têm URLs únicos que também fazem uma publicação http, algo como:

customer1.example.com/post/location/36A107F4-DD68-47F2-A093-753F7A427CF6 /

Onde customer1 é o nome do cliente e 36A107F4-DD68-47F2-A093-753F7A427CF6 é seu exclusivo guia de localização .

Eu quero que meu aplicativo faça algum tipo de chamada de API para bloquear um determinado URL e, em seguida, use uma chamada de API para desbloquear ou fazer com que o bloco expire após x minutos.

Isso é possível com qualquer serviço de código aberto como haproxy ou nginx?

    
por user1361315 24.05.2012 / 16:58

1 resposta

0

Aqui estão algumas ideias ... elas não são específicas de nginx ou HAProxy, mas possivelmente você poderia usar as mesmas ideias.

Este artigo discute como eles estão usando Verniz para implementar a limitação de taxa por URL para um aplicativo. O aplicativo se comunica com o Varnish usando um cabeçalho HTTP personalizado, em vez de uma chamada de API, mas a ideia é semelhante.

Usando o Apache, você pode fazer algo semelhante usando um RewriteMap programático ... procure solicitações em um banco de dados e, para aquelas que são atualmente limitadas por taxa, reescreva-as em uma página de erro, caso contrário, passe-as sem modificações. Ativar / desativar a limitação de taxa para um URL específico seria uma alteração simples de uma linha no banco de dados.

    
por 24.05.2012 / 17:17