Rumah  >  Artikel  >  Operasi dan penyelenggaraan  >  Cara menggunakan Nginx untuk pengehadan kadar permintaan dan kawalan aliran

Cara menggunakan Nginx untuk pengehadan kadar permintaan dan kawalan aliran

PHPz
PHPzasal
2023-08-03 23:42:221622semak imbas

Cara menggunakan Nginx untuk pengehadan kadar permintaan dan kawalan aliran

Nginx ialah pelayan web dan pelayan proksi yang ringan dengan prestasi tinggi dan keupayaan pemprosesan serentak yang tinggi, sesuai untuk membina sistem teragih yang besar. Dalam aplikasi praktikal, untuk memastikan kestabilan pelayan, kami selalunya perlu mengehadkan kadar dan aliran permintaan. Artikel ini akan memperkenalkan cara menggunakan Nginx untuk pengehadan kadar permintaan dan kawalan aliran, serta memberikan contoh kod.

  1. Had kadar permintaan

Had kadar permintaan merujuk kepada mengehadkan bilangan permintaan yang boleh dimulakan oleh setiap pelanggan dalam tempoh masa tertentu. Ini boleh menghalang pelanggan daripada meminta pelayan terlalu kerap, menyebabkan penggunaan sumber pelayan yang berlebihan.

Pertama, tambahkan kod berikut pada fail konfigurasi Nginx:

http {
    # 定义限速区域,以client IP为准
    limit_req_zone $binary_remote_addr zone=limit:10m rate=10r/s;
    
    server {
        listen 80;
        
        # 使用limit_req模块限制请求速率
        location / {
            limit_req zone=limit burst=20;
            proxy_pass http://backend;
        }
    }
}

Konfigurasi di atas akan mengehadkan setiap pelanggan untuk memulakan sehingga 10 permintaan dalam masa 1 saat, dan permintaan yang melebihi had akan ditangguhkan.

  1. Kawalan aliran

Kawalan aliran merujuk kepada penjadualan dan pemuatan permintaan melalui Nginx untuk mengoptimumkan beban pelayan dan meningkatkan pengalaman pengguna. Dengan memperuntukkan sumber pelayan secara rasional, anda boleh memastikan bahawa pelbagai jenis permintaan boleh dikendalikan dengan sewajarnya.

Berikut ialah kod sampel untuk kawalan aliran:

http {
    # 定义后端服务器
    upstream backend {
        server backend1;
        server backend2;
    }
    
    server {
        listen 80;
        
        location /api/ {
            # 根据请求路径进行分流
            if ($request_uri ~* "^/api/v1/") {
                proxy_pass http://backend1;
            }
            if ($request_uri ~* "^/api/v2/") {
                proxy_pass http://backend2;
            }
        }
        
        location / {
            # 静态文件请求走本地硬盘
            try_files $uri $uri/ =404;
        }
    }
}

Konfigurasi di atas akan secara terpilih memajukan trafik ke pelayan bahagian belakang berdasarkan laluan yang diminta. Sebagai contoh, permintaan yang bermula dengan /api/v1/ akan dimajukan ke pelayan backend1, dan permintaan yang bermula dengan /api/v2/ akan dimajukan ke pelayan backend2.

Anda boleh menggabungkan modul Nginx yang lain untuk melaksanakan kawalan trafik yang lebih kompleks mengikut keperluan sebenar, seperti kawalan trafik yang terperinci melalui kekerapan akses HTTP, IP pengguna atau kuki.

Ringkasan:

Melalui contoh di atas, kami mempelajari cara menggunakan Nginx untuk pengehadan kadar permintaan dan kawalan aliran. Pengehadan kadar permintaan boleh menghalang permintaan berniat jahat daripada menyebabkan tekanan yang berlebihan pada pelayan, manakala kawalan aliran boleh memperuntukkan sumber pelayan secara munasabah mengikut keperluan yang berbeza dan meningkatkan pengalaman pengguna. Dengan mengkonfigurasi Nginx dengan betul, kami dapat memastikan kestabilan dan prestasi pelayan dengan lebih baik.

Atas ialah kandungan terperinci Cara menggunakan Nginx untuk pengehadan kadar permintaan dan kawalan aliran. 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