1. Gambaran keseluruhan modul dan arahan yang digunakan untuk mengehadkan kekerapan akses, sambungan serentak dan kelajuan muat turun
ngx_http_limit_req_module: digunakan untuk mengehadkan bilangan permintaan setiap masa unit , iaitu, pengehadan kadar, algoritma baldi bocor menggunakan "baldi bocor"
ngx_http_limit_conn_module: digunakan untuk mengehadkan bilangan sambungan pada masa yang sama, iaitu had konkurensi
limit_rate dan limit_rate_after: Muat turun tetapan kelajuan
Algoritma baldi bocor (baldi bocor)
Idea algoritma ialah:
Air (diminta) dituangkan ke dalam baldi dari atas dan mengalir keluar dari bahagian bawah baldi (diproses)
Air yang tidak dapat mengalir keluar dalam masa disimpan dalam baldi (penampan) kepada Aliran keluar kadar tetap;
Inti algoritma ini ialah: caching permintaan, memprosesnya pada kelajuan tetap dan membuang permintaan berlebihan secara langsung.
modul pengehad kadar nginx berdasarkan kadar permintaan menggunakan algoritma baldi bocor, yang secara paksa boleh menjamin bahawa kelajuan pemprosesan masa nyata permintaan tidak akan melebihi ambang yang ditetapkan
http{ ... limit_req_zone $binary_remote_addr zone=one:30m rate=20r/s; limit_req_zone $binary_remote_addr $uri zone=two:30m rate=20r/s; limit_req_zone $binary_remote_addr $request_uri zone=three:30m rate=20r/s; limit_req_status 444; ... server{ ... limit_req zone=two burst=15 nodelay; ... } }
Penjelasan: limit_req_zone $binary_remote_addr zone=one:30m rate=20rs/s ;
$binary_remote_addr adalah untuk mengehadkan URL yang berbeza untuk alamat IP klien yang sama
zon: nama zon satu menyimpan sesi 30m
kadar : Permintaan sesaat
had_req_zon $binary_remote_addr $uri zon=dua:30m kadar=20r/s;
$binary_remote_addr $uri Ia adalah untuk mengehadkan url yang sama bagi alamat IP klien yang sama
zon: nama zon dua sesi storan30m
kadar: bilangan permintaan sesaat
limit_req_zone $binary_remote_addr $request_uri zone=tiga:30m rate=20r/s;
_$binary_remote $request_uri adalah untuk mengehadkan url yang sama bagi alamat ip pelanggan yang sama
zon: nama zon dua kedai sesi 30m
kadar: bilangan permintaan sesaat
limit_req zone=dua pecah=15 nodelay;
kawasan rujukan zon ialah dua,
burst menetapkan penimbal dengan saiz 15, apabila Apabila sejumlah besar permintaan (burst) masuk, jika akses melebihi had di atas, ia boleh diletakkan dalam penimbal terlebih dahulu.
nodelay biasanya digunakan bersama-sama dengan burst Jika nodelay ditetapkan, apabila frekuensi akses melebihi frekuensi dan penimbal penuh, 503 akan dikembalikan secara langsung akan beratur
Kes pertama: rreeeKes dua:<. 🎜>
http { ... limit_conn_log_level error; limit_conn_zone $binary_remote_addr zone=addr:10m; limit_conn_status 503; ... server { ... location /download/ { limit_conn addr 1; 单个客户端ip限制为1 } ... }
4. Hadkan kelajuan muat turun
http{ limit_conn_zone $binary_remote_addr zone=perip:10m; limit_conn_zone $server_name zone=perserver:10m; server { ... limit_conn perip 10; #单个客户端ip与服务器的连接数 limit_conn perserver 100; #限制与服务器的总连接数 } }
Atas ialah kandungan terperinci Cara menggunakan Nginx untuk mengehadkan kekerapan akses, kadar muat turun dan bilangan sambungan serentak. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!