Gerbang API & Proksi Songsang (Nginx + Spring Cloud Gateway) · Pelajaran

Pengehadan Kadar dan Pendikitan dengan Nginx

Sediakan pengehadan kadar untuk melindungi perkhidmatan bahagian belakang daripada penyalahgunaan dan memastikan penggunaan sumber yang adil.

Pelajaran 3 daripada 411 langkah

Pengehadan Kadar dan Pendikitan dengan Nginx ialah pelajaran Gerbang API & Proksi Songsang (Nginx + Spring Cloud Gateway) percuma di CoddyKit. Ini ialah pelajaran 3 daripada 4. Anda boleh membaca keseluruhan pelajaran di bawah secara percuma — kemudian berlatih secara praktikal dalam pelayar menggunakan penyunting kod terbina dalam dan tutor kecerdasan buatan 24/7. Pelajaran ini merupakan sebahagian daripada laluan pembelajaran Gerbang API & Proksi Songsang (Nginx + Spring Cloud Gateway), dan kemajuan anda disegerakkan merentas web serta aplikasi CoddyKit. Kursus Gerbang API & Proksi Songsang (Nginx + Spring Cloud Gateway) merangkumi sejumlah 4 pelajaran.

Sebab Pengehadan Kadar Penting

Bayangkan sebuah laman web atau API yang popular. Apakah yang berlaku jika seorang pengguna atau bot berniat jahat menghantar ribuan permintaan sesaat?

Di sinilah pengehadan kadar diperlukan! Ini ialah teknik penting untuk mengawal bilangan permintaan yang boleh dibuat oleh klien kepada pelayan anda dalam tempoh tertentu.

  • Mencegah penyalahgunaan dan serangan DDoS.
  • Memastikan penggunaan sumber yang adil untuk semua klien.
  • Melindungi perkhidmatan bahagian belakang anda daripada beban berlebihan.

Arahan Utama Nginx

Nginx menyediakan arahan yang berkuasa untuk melaksanakan pengehadan kadar. Kita akan menumpukan perhatian pada dua arahan utama:

  • limit_req_zone: Menentukan parameter bagi zon pengehadan kadar. Anggaplah ia sebagai penetapan peraturan untuk jenis trafik tertentu.
  • limit_req: Menggunakan peraturan pengehadan kadar yang ditentukan pada permintaan dalam blok location atau server tertentu. Di sinilah keajaibannya berlaku!

Menentukan Zon Pengehadan Kadar Anda

Arahan limit_req_zone biasanya diletakkan dalam blok http bagi konfigurasi Nginx anda. Arahan ini menentukan zon memori dikongsi yang digunakan Nginx untuk menjejaki keadaan permintaan.

Berikut ialah strukturnya dan maksud setiap bahagiannya:

  • key: Perkara yang dijejaki oleh Nginx (contohnya, $binary_remote_addr untuk alamat IP klien).
  • zone: Nama dan saiz zon anda (contohnya, my_limit:10m). Saiz tersebut menentukan bilangan kunci unik yang boleh dijejaki oleh Nginx.
  • rate: Had kadar sebenar (contohnya, rate=1r/s untuk 1 permintaan sesaat).

Menyediakan Zon Pertama Anda

Mari kita tentukan zon pengehadan kadar mudah yang menjejaki permintaan berdasarkan alamat IP klien dan membenarkan 5 permintaan sesaat.

http {
    # ... other http settings ...

    limit_req_zone $binary_remote_addr zone=my_ip_limit:10m rate=5r/s;

    server {
        # ...
    }
}

Melampirkan Had pada Lokasi

Selepas menentukan limit_req_zone, anda perlu menggunakannya pada bahagian tertentu laman web atau API anda menggunakan arahan limit_req.

Arahan ini diletakkan di dalam blok server atau location. Arahan ini hanya merujuk kepada zone yang anda cipta sebelum ini.

Contohnya, untuk menggunakan zon my_ip_limit pada lokasi tertentu:

limit_req zone=my_ip_limit;

Apabila klien melebihi kadar yang ditentukan, Nginx akan mengembalikan ralat 503 Service Unavailable secara lalai.

Had Kadar Asas Lengkap

Berikut ialah cara menggabungkan kedua-dua arahan untuk mengehadkan permintaan ke titik akhir /api/ anda kepada 2 permintaan sesaat bagi setiap alamat IP unik.

http {
    limit_req_zone $binary_remote_addr zone=api_requests:10m rate=2r/s;

    server {
        listen 80;
        server_name example.com;

        location /api/ {
            limit_req zone=api_requests;
            proxy_pass http://backend_service;
        }
    }
}

Membenarkan Lonjakan Sementara

Had kadar yang ketat kadangkala terlalu menyekat pengguna yang sah. Parameter burst membolehkan klien membuat permintaan yang melebihi kadar yang ditentukan buat sementara waktu.

  • burst=N: Membenarkan permintaan sehingga N lebih banyak daripada had kadar. Permintaan ini akan dimasukkan ke dalam baris gilir dan diproses pada kadar yang ditetapkan.
  • nodelay: Apabila digunakan bersama burst, Nginx memproses permintaan lonjakan dengan serta-merta jika boleh. Jika baris gilir penuh, permintaan seterusnya akan digugurkan (ralat 503) dan bukannya dilengahkan.

Tanpa nodelay, permintaan yang melebihi kadar akan dilengahkan supaya mematuhi kadar tersebut.

Pengehadan Kadar dengan Toleransi Lonjakan

Mari kita kemas kini contoh sebelumnya untuk membenarkan lonjakan sehingga 5 permintaan tambahan dan memprosesnya dengan serta-merta jika sumber mengizinkan.

http {
    limit_req_zone $binary_remote_addr zone=api_requests:10m rate=2r/s;

    server {
        listen 80;
        server_name example.com;

        location /api/ {
            limit_req zone=api_requests burst=5 nodelay;
            proxy_pass http://backend_service;
        }
    }
}

Pengehadan Kadar berbanding Pendikitan

Walaupun sering digunakan secara bersilih ganti, terdapat perbezaan kecil:

  • Pengehadan Kadar: Menguatkuasakan had mutlak terhadap bilangan permintaan dalam suatu tempoh (contohnya, 100 permintaan seminit). limit_req Nginx terutamanya melaksanakan pengehadan kadar.
  • Pendikitan: Merupakan proses yang lebih dinamik dan mungkin memperlahankan permintaan dan bukannya menolaknya terus. Proses ini sering mengambil kira beban pelayan atau ketersediaan sumber. Walaupun Nginx boleh melengahkan permintaan dengan burst (jika nodelay tidak digunakan), tumpuannya lebih kepada had yang ketat.

Untuk kebanyakan keperluan perlindungan API, keupayaan pengehadan kadar Nginx adalah kukuh dan sangat berkesan.

Semakan Pantas

Anda telah mempelajari arahan teras Nginx untuk pengehadan kadar. Sekarang, mari uji pengetahuan anda!

Ringkasan: Melindungi API Anda

Dalam pelajaran ini, anda telah mempelajari cara melaksanakan pengehadan kadar dengan Nginx untuk melindungi perkhidmatan bahagian belakang dan memastikan penggunaan yang adil.

  • Kita menentukan zon pengehadan kadar menggunakan limit_req_zone.
  • Kita menggunakan had ini pada lokasi tertentu menggunakan limit_req.
  • Kita meneroka pilihan burst dan nodelay untuk mengendalikan lonjakan trafik sementara dengan lebih baik.

Pengehadan kadar ialah corak asas keselamatan dan prestasi, khususnya apabila berurusan dengan API awam atau aplikasi web yang menerima trafik tinggi.

Percuma untuk bermula

Pelajari Gerbang API & Proksi Songsang (Nginx + Spring Cloud Gateway) dengan tutor kecerdasan buatan — percuma

Tulis dan jalankan kod sebenar dalam pelayar anda, dapatkan bantuan segera daripada tutor kecerdasan buatan yang tersedia 24/7, dan sambung semula dari tempat anda berhenti di web atau dalam aplikasi.

Kursus
12
Pelajaran
48

Soalan Lazim

Adakah pelajaran “Pengehadan Kadar dan Pendikitan dengan Nginx” percuma?

Ya — teks penuh “Pengehadan Kadar dan Pendikitan dengan Nginx” boleh dibaca secara percuma di web ini. Untuk berlatih secara interaktif menggunakan penyunting kod terbina dalam dan tutor kecerdasan buatan 24/7, serta membuka kunci baki kursus Gerbang API & Proksi Songsang (Nginx + Spring Cloud Gateway), tingkat taraf kepada CoddyKit PRO. Kursus Gerbang API & Proksi Songsang (Nginx + Spring Cloud Gateway) merangkumi sejumlah 4 pelajaran.

Apakah yang akan saya pelajari dalam “Pengehadan Kadar dan Pendikitan dengan Nginx”?

Sediakan pengehadan kadar untuk melindungi perkhidmatan bahagian belakang daripada penyalahgunaan dan memastikan penggunaan sumber yang adil. Anda berlatih Gerbang API & Proksi Songsang (Nginx + Spring Cloud Gateway) menggunakan kod praktikal yang dijalankan terus dalam pelayar, manakala tutor kecerdasan buatan 24/7 menjawab soalan anda semasa anda mengikuti pelajaran.

Adakah saya memerlukan pengalaman untuk memulakan Gerbang API & Proksi Songsang (Nginx + Spring Cloud Gateway)?

Tiada pengalaman terdahulu diperlukan. Pembelajaran Gerbang API & Proksi Songsang (Nginx + Spring Cloud Gateway) di CoddyKit disusun untuk pelajar daripada peringkat pemula hingga lanjutan, jadi anda boleh bermula di sini atau dari awal dan belajar mengikut kadar anda sendiri. Ini ialah pelajaran 3 daripada 4.

Berapa lamakah pelajaran “Pengehadan Kadar dan Pendikitan dengan Nginx” diambil?

Kebanyakan pelajaran CoddyKit mengambil masa kira-kira 5–10 minit. Setiap pelajaran ringkas dan interaktif, jadi anda boleh membuat kemajuan secara berterusan dan menyambung tepat dari tempat anda berhenti di web atau aplikasi.

Bolehkah saya menulis dan menjalankan kod dalam pelajaran Gerbang API & Proksi Songsang (Nginx + Spring Cloud Gateway) ini?

Ya. Setiap pelajaran Gerbang API & Proksi Songsang (Nginx + Spring Cloud Gateway) menyertakan penyunting kod terbina dalam, jadi anda boleh menulis dan menjalankan kod sebenar terus dalam pelayar serta menerima maklum balas kecerdasan buatan serta-merta — tanpa memerlukan persediaan setempat.

Semua pelajaran dalam kursus ini

  1. Penerbitan Versi API dengan Nginx
  2. Perkongsian Sumber Rentas Asal (CORS)
  3. Pengehadan Kadar dan Pendikitan dengan Nginx
  4. Penghalaan Berasaskan Laluan ke Perkhidmatan Mikro
← Kembali ke Gerbang API & Proksi Songsang (Nginx + Spring Cloud Gateway)