Limitando conexões de entrada é uma importante ação inicial para evitar ataques DoS (Denial of Services). Esta é a primeira linha de defesa contra ataques. Veja abaixo os parâmetros necessário para esta configuração:
limit_conn_zone $binary_remote_address zone=addr:10m;
limit_conn servers 1000;
Adicionando este código, você está limitando as conexões com o servidor em 1000 requisições por IP. Além de configurar 10MB de espaço para armazenamento de requisições.
Limitando Requisições
Da mesma forma que conexões, agora vamos limitar a quantidade de requisições aceitas por segundo.
limit_req_zone $binary_remote_addr zone=one:10m rate=5r/s;
limit_req zone=one burst=10;
limit_req_status 503;
Neste exemplo foi configurado:
- 5 requisições por segundo de um endereço de ip serão permitidas;
- Entre 5 e 10 requisições, novas requisições serão atrasadas;
- Acima de 10 requisições por segundo toda nova requisição será rejeitada conforme o status configurado pelo parâmetro
limit_req_status
;
Existe também o parâmetro nodelay
, que é usado para remover o atraso de novas requisições. Então, entre 5 e 10 req/sec novas requisições serão atendidas o mais rápido possível, conforme configurado em brust (10req/sec) e qualquer requisição excedente será rejeitada.
Estas são configurações simples que ajudam muito a manter o servidor protegido, existem diversos outros parâmetros como limite de banda e cache para controlar o trafego gerado, muito recomendado para VPS. Faça testes e ajuste conforme necessidade do seu ambiente. Qualquer dúvida ou sugestão, deixe nos comentário.