Rumah > Operasi dan penyelenggaraan > Nginx > Bagaimana untuk mengehadkan kekerapan akses setiap unit masa dalam nginx

Bagaimana untuk mengehadkan kekerapan akses setiap unit masa dalam nginx

WBOY
Lepaskan: 2023-05-15 13:43:06
ke hadapan
828 orang telah melayarinya

Pertama sekali, izinkan saya mengatakan bahawa saya menghadapi masalah ini kerana tapak web telah diserang dan Alibaba Cloud menghubungi polis saya terfikir untuk mengehadkan kekerapan akses dan bukannya mengehadkan alamat IP (pelan untuk mengehadkan alamat IP akan diberikan kemudian ). Kod status yang dikembalikan oleh nginx apabila sumber sambungan habis ialah 502. Selepas menambah sekatan penyelesaian ini, ia mengembalikan 599, yang berbeza daripada kod status biasa.
Langkahnya adalah seperti berikut:

Mula-mula tambah kandungan berikut pada nginx.conf:

map $http_x_forwarded_for  $clientrealip {
    "" $remote_addr;
    ~^(?p<firstaddr>[0-9\.]+),?.*$  $firstaddr;
    }

    ###safe setting to limit the request number per second
    limit_req_status 599;
    limit_req_zone $clientrealip zone=allips:70m rate=5r/s;
Salin selepas log masuk

Saiz kumpulan sesi ialah 70m Jika terdapat banyak IP terhad, anda boleh melaraskannya lebih kecil. Jika terdapat sedikit IP yang terhad, Jika terdapat banyak IP yang boleh diakses, anda perlu meningkatkan bilangan
kepada 5 permintaan sesaat Ini juga diselaraskan mengikut situasi 5 adalah lebih sesuai atau lebih besar sedikit.

Kemudian ubah suai www.xxoo.com.conf (ini ialah fail konfigurasi lnmp untuk setiap hos maya Dalam pelayan, tambah baris berikut di atas lokasi:

limit_req zone=allips burst=5 nodelay;
Salin selepas log masuk

Mulakan semula nginx dalam ini). cara. Anda boleh menulis skrip untuk menguji keselarasan.

Skrip serentak python disediakan seperti berikut:

import threading
import time,urllib2


url = &#39;http://sf.gg/&#39;
def worker():
  try:
   response = urllib2.urlopen(url)
   print response.getcode()
  except urllib2.httperror, e:
   print e.code

for i in range(2000):
  t = threading.thread(target=worker)
  t.start()
Salin selepas log masuk

Antaranya, 2000 dan http://sf.gg/ boleh diubah suai, dan kemudian laksanakan python *.py > analisis keluar Kod status dalam fail diedarkan Jika 599 adalah perkara biasa, had kekerapan akan memainkan peranan.

Atas ialah kandungan terperinci Bagaimana untuk mengehadkan kekerapan akses setiap unit masa dalam nginx. 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