Arahan Nginx limit_rate
memungkinkan Anda menentukan kecepatan yang ingin Anda nilai tanggapan batas, misalnya
location / {
if ($slow) {
limit_rate 4k;
}
}
Dokumentasi Nginx ada di sini . (dari dokumentasi Anda akan melihat bahwa backend Anda dapat membuat keputusan dan meminta Nginx untuk menilai batas klien)
Bagaimana Anda mendapatkan $slow
set variabel ini tergantung pada konfigurasi Anda. Cara termudah adalah mengaturnya melalui geo
pemetaan:
geo $slow {
default 0;
1.2.3.0/24 1;
}
"Geo" pemetaan adalah ketergantungan $slow
berdasarkan pada alamat IP klien. Ini 0 secara default dan 1 jika alamat IP klien di 1.2.3.0/24
subnet. Lihat dokumentasi Nginx di "geo" di sini
Menggunakan "fail2ban" adalah evolusi yang masuk akal dari seluruh solusi ini. Anda dapat menggunakan "fail2ban" untuk secara otomatis mendeteksi aktivitas yang tidak biasa dan mengumpulkan IP untuk Nginx dan kemudian memuat ulang Nginx sehingga membaca kembali daftar alamat IP yang perlu diperlambat dan / atau diblokir.
Cara terbaik untuk menangani spammer ini adalah memasang dan mengkonfigurasi fail2ban dengan benar. Fail2ban akan mencari pola dalam file log dan memblokir semua ips yang mengirim spam ke situs Anda. Tentu, Anda harus mengkonfigurasinya untuk mencari pola yang tepat.
sumber