Puncte:1

Configurația limitei ratei nu funcționează în nginx

drapel mx

Încerc să limitez rata oricăror apeluri la adrese URL cu prefixul /api/, am configurat o limită de rată cu configurația atașată, dar nu văd nicio limitare când folosesc Axios pentru a testa.

limit_req_zone $binary_remote_addr zone=mylimit:10m rate=1r/s;
Server {
    nume_server gmmff.test;
    root /home/angel/wdev/laravel/gmf/public;

    add_header X-Frame-Options „SAMEORIGIN”;
    add_header X-Content-Type-Options "nosniff";

    error_log /var/log/nginx/gmf.log warn;
    access_log /var/log/nginx/gmf-access.log;
    index index.php;

    set de caractere utf-8;

    Locație / {
        try_files $uri $uri/ /index.php?$query_string;
    }

    locație /api/ {
        limit_req zone=mylimit;
        rescrie ^/api/(.*)$ /index.php?$query_string;
    }

    locație = /favicon.ico { access_log off; log_not_found off; }
    locație = /robots.txt { access_log off; log_not_found off; }

    eroare_page 404 /index.php;

    locație ~ \.php$ {
        fastcgi_pass unix:/var/run/php/php8.0-fpm.sock;
        fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
        include fastcgi_params;
    }

    locație ~ /\.(?!cunoscut).* {
        nega totul;
    }

}
Puncte:0
drapel jp

URI-urile care încep cu /api/ sunt rescrise la /index.php si limit_req directiva nu mai este în domeniul de aplicare atunci când acesta din urmă URI este procesat.

Opțiunea 1) Puteți procesa index.php dosar în cadrul locație /api/ bloc.

De exemplu:

locație /api/ {
    limit_req zone=mylimit;
    include fastcgi_params;
    fastcgi_param SCRIPT_FILENAME $realpath_root/index.php;
    fastcgi_pass unix:/var/run/php/php8.0-fpm.sock;
}

Pur și simplu punct SCRIPT_FILENAME la locația de index.php.


Opțiunea 2) Mutați limit_req directivă, astfel încât să fie întotdeauna în domeniul de aplicare, dar activați-o și dezactivați-o efectiv prin manipularea variabilei „cheie” cu un Hartă directivă.

De exemplu:

harta $request_uri $token {
    ~^/api/ $binary_remote_addr;
    Mod implicit    '';
}
limit_req_zone $token zone=mylimit:10m rate=1r/s;

Server {
    ...
    limit_req zone=mylimit;
    ...
}

Din documentatia:

Solicitările cu o valoare de cheie goală nu sunt contabilizate.

Angel avatar
drapel mx
Am încercat metoda numărul 1, cu următoarea configurație https://pastebin.com/fC5EBifi am setat rata la 3r/s, dar rezultatul final a fost limitarea ratei la 1r/s, am încercat metoda 2 și același rezultat .

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.