Cara membatasi bandwidth jaringan di server web nginx

Cara membatasi bandwidth jaringan di server web nginx

Sebelumnya, di kami Nginx Seri Manajemen Lalu Lintas dan Kontrol Keamanan, kami telah membahas cara membatasi jumlah koneksi yang dapat dibuat oleh klien yang sama dengan sumber daya web Anda, menggunakan parameter identifikasi klien seperti alamat IP. Kami juga membahas cara membatasi tingkat permintaan (membatasi tarif di mana klien dapat mengajukan permintaan) untuk sumber daya web Anda.

Untuk memastikan bahwa bandwidth penggunaan aplikasi Anda tidak dikeluarkan oleh klien tunggal, Anda perlu mengontrol kecepatan unggahan dan unduhan per klien. Ini adalah hal yang umum Nginx kontrol keamanan terhadap Dos (Kegagalan layanan) Serangan dari pengguna jahat yang hanya mencoba menyalahgunakan kinerja situs.

Pada bagian ketiga dari seri ini, kami akan menjelaskan cara membatasi bandwidth jaringan di Nginx server web.

Membatasi bandwidth di nginx

Untuk membatasi bandwidth Nginx, menggunakan limit_rate Petunjuk yang membatasi tingkat transmisi respons ke klien. Itu berlaku di Http, server, Lokasi, Dan Jika pernyataan dalam a Lokasi blokir, dan itu menentukan batas tarif untuk konteks yang diberikan dalam byte per detik secara default. Anda juga bisa menggunakan M untuk megabytes atau G untuk gigabytes.

limit_rate 20k; 

Petunjuk terkait lainnya adalah Limit_RATE_AFTER, yang menentukan bahwa koneksi tidak boleh terbatas pada tingkat sampai setelah jumlah data yang ditentukan telah ditransfer. Petunjuk ini dapat diatur dalam HTTP, Server, Lokasi, dan "Jika Pernyataan dalam Blok Lokasi".

limit_rate_after 500k; 

Berikut adalah contoh konfigurasi untuk membatasi klien untuk mengunduh konten melalui satu koneksi pada kecepatan maksimum 20 kilobyte per detik.

Hulu API_Service Server 10.1.1.10: 9051; Server 10.1.1.77: 9052;  server dengarkan 80; server_name testApp.tecmint.com; root/var/www/html/testapp.tecmint.com/build; Indeks Indeks.html; Lokasi / TRY_FILES $ URI $ URI / / INDEX.html = 404 = 403 = 500;  Lokasi/API proxy_pass http: // api_service; proxy_set_header x-real-ip $ remote_addr; proxy_set_header host $ host; proxy_set_header X-forwarded-for $ proxy_add_x_forwarded_for; proxy_http_version 1.1; proxy_set_header upgrade $ http_upgrade; proxy_set_header koneksi "upgrade";  lokasi /dokumen  limit_rate 20k; limit_rate_after 500k;  

Setelah Anda menambahkan pengaturan yang diperlukan yang dijelaskan di atas, simpan perubahan dan tutup file. Setelah itu, periksa apakah Nginx Sintaks konfigurasi benar, seperti demikian:

$ sudo nginx -t 

Jika semuanya baik -baik saja, muat ulang Nginx Layanan untuk mempengaruhi perubahan terbaru:

$ sudo systemctl Reload nginx 

Membatasi bandwidth dan jumlah koneksi di nginx

Dengan konfigurasi di atas, klien dapat membuka beberapa koneksi untuk meningkatkan bandwidth. Oleh karena itu, selain itu, Anda juga dapat membatasi koneksi per klien menggunakan parameter seperti alamat IP seperti yang kami lihat sebelumnya.

Misalnya, Anda dapat membatasi satu koneksi per alamat IP.

Hulu API_Service Server 127.0.0.1: 9051; Server 10.1.1.77: 9052;  limit_conn_zone $ Binary_remote_addr zona = LimitConnByAddr: 20m; Limit_conn_status 429; server dengarkan 80; server_name testApp.tecmint.com; root/var/www/html/testapp.tecmint.com/build; Indeks Indeks.html; Lokasi / TRY_FILES $ URI $ URI / / INDEX.html = 404 = 403 = 500;  Lokasi /API  Limit_Conn LimitConnbyAddr 5; proxy_pass http: // api_service; proxy_set_header x-real-ip $ remote_addr; proxy_set_header host $ host; proxy_set_header X-forwarded-for $ proxy_add_x_forwarded_for; proxy_http_version 1.1; proxy_set_header upgrade $ http_upgrade; proxy_set_header koneksi "upgrade";  lokasi /dokumen  limit_rate 50k; limit_rate_after 500k; Limit_Conn LimitConnbyAddr 1;  

Membatasi bandwidth secara dinamis di nginx

Sebagai nilai parameter ke limit_rate Petunjuk, Anda dapat menentukan variabel untuk membatasi bandwidth secara dinamis. Ini sangat berguna dalam situasi di mana laju harus dibatasi tergantung pada kondisi tertentu.

Dalam contoh ini, kami menggunakan blok peta. Ini memungkinkan Anda untuk membuat variabel baru yang nilainya tergantung pada nilai satu atau lebih variabel asli ($ lambat Dan $ limit_rate) ditentukan dalam parameter pertama.

Hulu API_Service Server 10.1.1.10: 9051; Server 10.1.1.77: 9052;  peta $ lambat $ limit_rate 1 20k; 2 30K;  server dengarkan 80; server_name testApp.tecmint.com; root/var/www/html/testapp.tecmint.com/build; Indeks Indeks.html; Lokasi / TRY_FILES $ URI $ URI / / INDEX.html = 404 = 403 = 500;  Lokasi/API proxy_pass http: // api_service; proxy_set_header x-real-ip $ remote_addr; proxy_set_header host $ host; proxy_set_header X-forwarded-for $ proxy_add_x_forwarded_for; proxy_http_version 1.1; proxy_set_header upgrade $ http_upgrade; proxy_set_header koneksi "upgrade";  lokasi /dokumen  limit_rate $ limit_rate; limit_rate_after 500k;  

Berikut adalah contoh konfigurasi sampel lain untuk menggambarkan pembatasan dinamis bandwidth di nginx. Konfigurasi ini memungkinkan Nginx membatasi bandwidth berdasarkan versi TLS. Petunjuknya Limit_RATE_AFTER 512 menyiratkan tingkat batas setelah header telah dikirim.

Hulu API_Service Server 10.1.1.10: 9051; Server 10.1.1.77: 9052;  peta $ ssl_protocol $ response_rate "tlsv1.1 "50K;" TLSV1.2 "100K;" TLSV1.3 "500K; Server Listen 443 SSL; SSL_PROTOCOLS TLSV1.1 TLSV1.2 TLSV1.3; ssl_certificate/etc/ssl/testapp.CRT; ssl_certificate_key/etc/ssl/testapp.kunci; lokasi / limit_rate $ response_rate; # Batas Bandwidth Berdasarkan versi TLS Limit_RATE_AFTER 512; proxy_pass http: // api_service;  

Hanya itu yang kami miliki untuk Anda di bagian seri ini. Kami akan terus membahas lebih banyak topik tentang Nginx Manajemen Lalu Lintas dan Kontrol Keamanan. Tetapi seperti biasa, Anda dapat mengajukan pertanyaan atau membagikan pemikiran Anda tentang panduan ini melalui formulir umpan balik di bawah ini.

Referensi: Panduan Kontrol Keamanan di Situs Web Nginx.