Cara Mengehadkan Bandwidth Rangkaian di Nginx Web Server

Cara Mengehadkan Bandwidth Rangkaian di Nginx Web Server

Sebelum ini, di kami Nginx Siri Pengurusan Lalu Lintas dan Kawalan Keselamatan, kami telah membincangkan cara mengehadkan bilangan sambungan yang boleh dibuat oleh klien yang sama kepada sumber web anda, menggunakan parameter pengenalan pelanggan seperti alamat IP. Kami juga meliputi cara mengehadkan kadar permintaan (hadkan kadar di mana pelanggan boleh membuat permintaan) untuk sumber web anda.

Untuk memastikan lebar jalur penggunaan aplikasi anda tidak dibelanjakan oleh pelanggan tunggal, anda perlu mengawal kelajuan muat naik dan muat turun bagi setiap pelanggan. Ini adalah perkara biasa Nginx Kawalan keselamatan terhadap Dos (Penafian perkhidmatan) Serangan dari pengguna berniat jahat yang hanya berusaha menyalahgunakan prestasi tapak.

Di bahagian ketiga siri ini, kami akan menerangkan cara mengehadkan jalur lebar rangkaian di Nginx pelayan web.

Mengehadkan jalur lebar di nginx

Untuk menghadkan jalur lebar di Nginx, menggunakan had_rate Arahan yang menghadkan kadar penghantaran tindak balas kepada pelanggan. Ia sah di Http, pelayan, Lokasi, dan jika pernyataan dalam Lokasi blok, dan ia menentukan had kadar untuk konteks tertentu dalam bait sesaat secara lalai. Anda juga boleh menggunakan m untuk megabait atau g untuk gigabait.

had_rate 20k; 

Arahan lain yang berkaitan adalah had_rate_after, yang menentukan bahawa sambungan tidak boleh dibatasi kadar sehingga selepas jumlah data yang ditentukan telah dipindahkan. Arahan ini boleh ditetapkan dalam HTTP, Server, Lokasi, dan "Jika pernyataan dalam blok lokasi".

had_rate_after 500k; 

Berikut adalah contoh konfigurasi untuk menghadkan pelanggan untuk memuat turun kandungan melalui satu sambungan pada kelajuan maksimum 20 kilobytes sesaat.

Hulu API_Service Server 10.1.1.10: 9051; pelayan 10.1.1.77: 9052;  pelayan Dengar 80; Server_name testapp.Tecmint.com; root/var/www/html/testapp.Tecmint.com/membina; Indeks indeks.html; lokasi / try_files $ uri $ uri / / indeks.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-forward-for $ proxy_add_x_forwarded_for; proxy_http_version 1.1; proxy_set_header menaik taraf $ http_upgrade; proxy_set_header sambungan "menaik taraf";  lokasi /dokumen  had_rate 20k; had_rate_after 500k;  

Sebaik sahaja anda telah menambah tetapan yang diperlukan di atas, simpan perubahan dan tutup fail. Selepas, periksa sama ada Nginx Sintaks konfigurasi betul, seperti itu:

$ sudo nginx -t 

Sekiranya semuanya baik -baik saja, muat semula Nginx perkhidmatan untuk melaksanakan perubahan terkini:

$ sudo Systemctl Reload nginx 

Mengehadkan jalur lebar dan bilangan sambungan di nginx

Dengan konfigurasi di atas, pelanggan boleh membuka beberapa sambungan untuk meningkatkan jalur lebar. Oleh itu, selain itu, anda juga boleh mengehadkan sambungan setiap klien menggunakan parameter seperti alamat IP seperti yang kita lihat sebelumnya.

Contohnya, anda boleh mengehadkan satu sambungan setiap alamat IP.

Hulu API_Service Server 127.0.0.1: 9051; pelayan 10.1.1.77: 9052;  limit_conn_zone $ binary_remote_addr zon = limitconnbyaddr: 20m; had_conn_status 429; pelayan mendengar 80; Server_name testapp.Tecmint.com; root/var/www/html/testapp.Tecmint.com/membina; Indeks indeks.html; lokasi / try_files $ uri $ uri / / indeks.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-forward-for $ proxy_add_x_forwarded_for; proxy_http_version 1.1; proxy_set_header menaik taraf $ http_upgrade; proxy_set_header sambungan "menaik taraf";  lokasi /dokumen  had_rate 50k; had_rate_after 500k; had_conn limitconnbyaddr 1;  

Mengehadkan jalur lebar secara dinamik dalam nginx

Sebagai nilai parameter ke had_rate arahan, anda boleh menentukan pembolehubah untuk mengehadkan jalur lebar secara dinamik. Ia amat berguna dalam situasi di mana kadarnya harus terhad bergantung pada keadaan tertentu.

Dalam contoh ini, kami menggunakan blok peta. Ia membolehkan anda membuat pemboleh ubah baru yang nilainya bergantung pada nilai satu atau lebih pembolehubah asal ($ lambat dan $ limit_rate) yang dinyatakan dalam parameter pertama.

Hulu API_Service Server 10.1.1.10: 9051; pelayan 10.1.1.77: 9052;  peta $ lambat $ limit_rate 1 20k; 2 30k;  pelayan mendengar 80; Server_name testapp.Tecmint.com; root/var/www/html/testapp.Tecmint.com/membina; Indeks indeks.html; lokasi / try_files $ uri $ uri / / indeks.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-forward-for $ proxy_add_x_forwarded_for; proxy_http_version 1.1; proxy_set_header menaik taraf $ http_upgrade; proxy_set_header sambungan "menaik taraf";  lokasi /dokumen  had_rate $ limit_rate; had_rate_after 500k;  

Berikut adalah contoh konfigurasi sampel yang lain untuk menggambarkan batas jalur lebar dinamik dalam nginx. Konfigurasi ini membolehkan Nginx mengehadkan jalur lebar berdasarkan versi TLS. Arahan itu had_rate_after 512 menyiratkan kadar had selepas tajuk telah dihantar.

Hulu API_Service Server 10.1.1.10: 9051; pelayan 10.1.1.77: 9052;  peta $ ssl_protocol $ response_rate "tlsv1.1 "50K;" TLSV1.2 "100K;" TLSV1.3 "500K; Server Dengar 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; # Had lebar jalur berdasarkan versi TLS Limit_rate_After 512; proxy_pass http: // api_service;  

Itu sahaja yang kami ada untuk anda di bahagian siri ini. Kami akan terus merangkumi lebih banyak topik mengenai Nginx Pengurusan Lalu Lintas dan Kawalan Keselamatan. Tetapi seperti biasa, anda boleh mengemukakan soalan atau berkongsi pendapat anda mengenai panduan ini melalui borang maklum balas di bawah.

Rujukan: Panduan Kawalan Keselamatan di laman web Nginx.