Rumah  >  Artikel  >  Operasi dan penyelenggaraan  >  Nginx mengehadkan konfigurasi kekerapan akses untuk mengelakkan serangan berniat jahat

Nginx mengehadkan konfigurasi kekerapan akses untuk mengelakkan serangan berniat jahat

WBOY
WBOYasal
2023-07-04 17:01:473319semak imbas

Nginx mengehadkan konfigurasi kekerapan akses untuk mengelakkan serangan berniat jahat

Dengan perkembangan Internet, keselamatan tapak web telah menjadi isu penting. Untuk mengelakkan serangan berniat jahat, kita perlu mengehadkan kekerapan akses. Sebagai pelayan web berprestasi tinggi, Nginx boleh mencapai matlamat ini melalui konfigurasi.

Nginx menyediakan modul yang dipanggil limit_req_module, yang boleh mengehadkan kekerapan akses. Sebelum mengkonfigurasi, kita perlu memastikan modul didayakan. Dalam fail nginx.conf, kami mencari nod http dan menambah kod berikut padanya:

http {
    ...
    limit_req_zone $binary_remote_addr zone=myzone:10m rate=5r/s;
    ...
}

Dalam kod di atas, limit_req_zone digunakan untuk menentukan kawasan memori yang merekodkan bilangan lawatan bagi setiap alamat IP. $binary_remote_addr ialah pembolehubah Nginx yang mewakili alamat IP pelanggan. zone=myzone ialah nama zon dan boleh disesuaikan. 10m bermakna kawasan itu bersaiz 10 megabait. rate=5r/s bermakna sehingga 5 permintaan dibenarkan sesaat.

Seterusnya, kami boleh menggunakan sekatan ini dalam konfigurasi lokasi tertentu. Sebagai contoh, kami ingin mengehadkan antara muka, kodnya adalah seperti berikut:

location /api/ {
    ...
    limit_req zone=myzone burst=10 nodelay;
    ...
}

Dalam kod di atas, arahan limit_req digunakan untuk mendayakan modul mengehadkan kekerapan permintaan dan menentukan nama zon myzone yang ditakrifkan sebelum ini. pecah=10 bermakna selepas melebihi kekerapan had, sehingga 10 permintaan akan ditangguhkan. Nodelay bermakna jika melebihi had kekerapan, tidak akan ada kelewatan, tetapi ralat 503 akan dikembalikan secara langsung.

Selain kaedah konfigurasi di atas, kami juga boleh mengehadkan tempoh masa yang ditetapkan. Sebagai contoh, kami hanya ingin mengehadkannya dalam tempoh masa bekerja, kodnya adalah seperti berikut:

location /api/ {
    ...
    limit_req zone=myzone burst=10 nodelay;
    limit_req_status 403;
    limit_req_log_level error;
    limit_req_time 8h;
    ...
}

Dalam kod di atas, limit_req_time digunakan untuk menentukan tempoh masa terhad, di sini kami mengehadkannya kepada 8 jam. Arahan lain seperti limit_req_status dan limit_req_log_level digunakan untuk mengkonfigurasi kod status kembali dan tahap pengelogan apabila melebihi had kekerapan.

Perlu diingatkan bahawa konfigurasi di atas hanya mengehadkan kekerapan capaian satu antara muka. Jika kami ingin menyekat keseluruhan tapak web, kami boleh mengkonfigurasinya dalam nod pelayan. Kodnya adalah seperti berikut:

server {
    ...
    limit_req zone=myzone burst=10 nodelay;
    ...
}

Melalui konfigurasi di atas, kami boleh mengehadkan kesan serangan berniat jahat pada tapak web dengan berkesan. Walau bagaimanapun, perlu diingatkan bahawa butiran sekatan kekerapan harus ditentukan oleh keperluan perniagaan tertentu dan tidak boleh terlalu ketat, jika tidak, ia akan menjejaskan pengalaman akses pengguna biasa.

Untuk meringkaskan, modul limit_req_module Nginx boleh membantu kami mengehadkan kekerapan akses untuk mengelakkan serangan berniat jahat. Melalui konfigurasi yang munasabah, keselamatan tapak web boleh dilindungi dan pengalaman akses pengguna boleh dipertingkatkan. Saya harap artikel ini berguna kepada semua orang!

Atas ialah kandungan terperinci Nginx mengehadkan konfigurasi kekerapan akses untuk mengelakkan serangan berniat jahat. 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