Rumah  >  Artikel  >  Operasi dan penyelenggaraan  >  Cara menggunakan Nginx untuk mengehadkan kekerapan akses, kadar muat turun dan bilangan sambungan serentak

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

王林
王林ke hadapan
2023-05-15 21:22:221647semak imbas

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; 
    ... 
 
  } 
}

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 
    } 
    ... 
 
}

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!

Kenyataan:
Artikel ini dikembalikan pada:yisu.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam