Rate limiting in Nginx
Come limitare connessioni, richieste e velocità di risposta in Nginx.
Nginx include strumenti integrati affidabili per tenere il traffico sotto controllo. Che tu stia gestendo client abusivi, proteggendo un endpoint di download o semplicemente evitando che un singolo utente monopolizzi tutta la larghezza di banda — queste direttive coprono ogni scenario. Tutto si configura nel file di configurazione di Nginx.
1. Limitazione del numero di connessioni simultanee
Per prima cosa, definisci una zona in memoria condivisa nel blocco http usando limit_conn_zone. È qui che Nginx tiene traccia dello stato delle connessioni per IP client:
http {
limit_conn_zone $binary_remote_addr zone=conn_limit_per_ip:10m;
}
Poi, nel blocco location appropriato, applica il limite referenziando la zona e impostando il numero massimo di connessioni simultanee per IP:
location /download/ {
limit_conn conn_limit_per_ip 5;
}
2. Limitazione della frequenza delle richieste
Nel blocco http, usa limit_req_zone per definire una zona e impostare una frequenza di richieste consentita:
http {
limit_req_zone $binary_remote_addr zone=req_limit_per_ip:10m rate=5r/s;
}
Nel blocco location, referenzia la zona e definisci un margine di burst — quante richieste extra possono accodarsi prima che Nginx inizi a rifiutarle:
location /download/ {
limit_req zone=req_limit_per_ip burst=10;
}
I nostri prodotti e servizi
3. Limitazione della velocità di trasferimento delle risposte
La direttiva limit_rate impone un limite alla velocità di risposta in byte al secondo per connessione. Tieni presente che se un client apre due connessioni simultaneamente, il throughput effettivo sarà il doppio del limite.
location /download/ {
limit_rate 50k;
}
Se preferisci lasciare passare il blocco iniziale di dati a piena velocità prima di applicare la limitazione, abbinala a limit_rate_after:
location /download/ {
limit_rate_after 1m;
limit_rate 50k;
}
In questo esempio, il primo megabyte viene servito a piena velocità — dopodiché Nginx applica il limite di 50 KB/s.
Aiuto
Hai domande o ti serve una mano? Scrivici tramite il sistema di ticket — siamo sempre qui per aiutarti!