Cara menggunakan Nginx untuk mengehadkan kekerapan akses, kadar muat turun dan bilangan sambungan serentak

王林
Lepaskan: 2023-05-15 21:22:22
ke hadapan
1702 orang telah melayarinya

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)

Cara menggunakan Nginx untuk mengehadkan kekerapan akses, kadar muat turun dan bilangan sambungan serentak

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

  • 2. Hadkan kekerapan permintaan akses url
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; 
    ... 
 
  } 
}
Salin selepas log masuk

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

  • 3 Had pada bilangan sambungan serentak

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 
    } 
    ... 
 
}
Salin selepas log masuk

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; #限制与服务器的总连接数 
  } 
}
Salin selepas log masuk

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!

Label berkaitan:
sumber:yisu.com
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan