Experimente o módulo mod_qos do Apache. A versão atual tem os seguintes mecanismos de controle.
- O número máximo de solicitações simultâneas para um local / recurso (URL) ou host virtual.
- Limitação da largura de banda, como o número máximo permitido de solicitações por segundo para um URL ou o máximo / mínimo de download kbytes por segundo.
- Limita o número de eventos de solicitação por segundo (solicitação especial condições). Pode também "detectar" pessoas muito importantes (VIP) que pode acessar o servidor da web sem ou com menos restrições.
- Linha genérica de solicitação e filtro de cabeçalho para negar a desautorização operações.
- Solicitar limitação e filtragem de dados do corpo (requer mod_parp).
- Limitações no nível da conexão TCP, por exemplo, o número máximo de conexões permitidas de um único endereço de origem IP ou dinâmico controle keep-alive.
- Prefere endereços IP conhecidos quando o servidor fica sem TCP livre conexões.
Esta regra condicional de amostra da documentação deve levá-lo na direção certa.
# set the conditional variable to spider if detecting a
# "slurp" or "googlebot" search engine:
BrowserMatch "slurp" QS_Cond=spider
BrowserMatch "googlebot" QS_Cond=spider
# limits the number of concurrent requests to two applications
# (/app/b and /app/c) to 300 but does not allow access by a "spider"
# if the number of concurrent requests exceeds the limit of 10:
QS_LocRequestLimitMatch "^(/app/b/|/app/c/).*$" 300
QS_CondLocRequestLimitMatch "^(/app/b/|/app/c/).*$" 10 spider