Rumah >Operasi dan penyelenggaraan >Nginx >Kawalan capaian berasaskan tetingkap masa dalam proksi terbalik Nginx

Kawalan capaian berasaskan tetingkap masa dalam proksi terbalik Nginx

PHPz
PHPzasal
2023-06-10 12:01:361214semak imbas

Dengan pembangunan Internet, semakin banyak aplikasi digunakan dalam awan Bagaimana untuk memastikan keselamatan dan kestabilan perkhidmatan awan telah menjadi isu utama. Antaranya, Nginx, sebagai pelayan web berprestasi tinggi dan proksi terbalik, digunakan secara meluas dalam penggunaan dan pengurusan perkhidmatan awan. Dalam aplikasi praktikal, akses perlu dihadkan dalam beberapa senario, seperti IP yang kerap diakses, permintaan akses berniat jahat, akses trafik besar, dsb. Artikel ini akan memperkenalkan kaedah kawalan akses berdasarkan tetingkap masa untuk memastikan keselamatan dan kestabilan perkhidmatan awan dengan mengehadkan bilangan akses dalam tempoh masa tertentu.

1. Apakah itu tetingkap masa

Tetingkap masa merujuk kepada kaedah mengehadkan acara dalam tempoh masa tertentu. Dalam kawalan akses, akses boleh dihadkan berdasarkan tetingkap masa, contohnya: maksimum 10 lawatan dalam 1 minit, maksimum 100 lawatan dalam 5 minit, maksimum 1,000 lawatan dalam satu jam, dsb. Tetingkap masa boleh dilaraskan mengikut keadaan sebenar dan fleksibel dan boleh disesuaikan.

2. Kawalan akses tetingkap masa dalam proksi terbalik Nginx

  1. Pasang modul ngx_http_limit_req_module

Sebelum menggunakan kawalan akses tetingkap masa nginx, anda perlu memasang ia ngx_http_limit_req_module modul. Modul ini boleh mengawal kekerapan permintaan pelanggan yang tiba dalam tempoh masa yang sama. Biasanya apabila kita memasang nginx, kita akan memasang modul ini pada masa yang sama. Jika ia tidak dipasang, anda perlu menyusun semula dan memasang nginx. proksi

  1. dalam Tambah kandungan berikut pada fail konfigurasi proksi terbalik Nginx:
  2. $ wget http://nginx.org/download/nginx-1.14.0.tar.gz
    
    $ tar zxvf nginx-1.14.0.tar.gz
    
    $ cd nginx-1.14.0/
    
    $ ./configure --prefix=/usr/local/nginx --add-module=../nginx-limit-req-module-master
    
    $ make
    
    $ sudo make install
Dalam konfigurasi ini, limit_req_zone mentakrifkan kawasan had satu, dengan 10m ialah saiz memori, yang boleh diselaraskan mengikut keperluan sebenar. rate=1r/s mentakrifkan satu permintaan sesaat. Limit_req zone=one burst=5 ditambahkan pada lokasi, yang bermaksud apabila bilangan satu permintaan sesaat melebihi, lebihan permintaan akan diproses dengan nilai puncak 5 permintaan pada masa berikutnya.

Kawalan akses tetingkap masa pengesahan

  1. Selepas konfigurasi selesai, anda boleh menggunakan alat ab untuk menguji, seperti berikut:
  2. limit_req_zone $binary_remote_addr zone=one:10m rate=1r/s;
    
    server{
        ...
        location /{
            limit_req zone=one burst=5;
            proxy_pass http://backend;
        }
    }
Arahan ini bermakna: hantar 100 permintaan, bilangan permintaan serentak ialah 10. Keputusan ujian: Jika 10 permintaan dihantar dalam masa 1 saat, permintaan yang selebihnya akan dihadkan dan ralat 429 akan dihasilkan, seperti berikut:

$ ab -n 100 -c 10 http://localhost/

This is ApacheBench, Version 2.3 <$Revision: 1807734 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/

Benchmarking localhost (be patient)
Finished 100 requests

3. Ringkasan

Penerapan perkhidmatan awan dan pengurusan, kawalan akses adalah penting. Melalui kawalan capaian berasaskan tetingkap masa dalam proksi terbalik Nginx, kekerapan capaian boleh dikawal dengan berkesan untuk memastikan keselamatan dan kestabilan perkhidmatan awan. Kaedah ini bukan sahaja boleh mengehadkan permintaan frekuensi tinggi, tetapi juga mengehadkan permintaan akses berniat jahat, dengan berkesan meningkatkan kebolehpercayaan dan keselamatan perkhidmatan awan.

Atas ialah kandungan terperinci Kawalan capaian berasaskan tetingkap masa dalam proksi terbalik Nginx. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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