Puncte:2

Nginx cum să dezactivezi limitarea ratei per ip

drapel cn
Dan

Am un API care se conectează prin ip privat al serverului EC2 și execută o secvență de apeluri inverse.Vreau să dezactivez limitarea ratei per ip în acest scenariu. Am încercat această metodă în documentația Nginx.

Acest lucru nu rezolvă limita de rată pentru problemă. Jurnal de acces

192.168.192.51 - - [14/Iun/2021:00:09:55 +0530] „POST /project/api/v1/vendor/callback HTTP/1.1” 429 8576 „-” „Java/1.8.0_151” „- " "192.168.13.173" sn="192.168.13.173" rt=0.009 ua="unix:/var/run/php/php7.4-fpm.sock" us="429" ut="0.008" ul="8591 " cs=-

Fișierul de conf. Nginx

utilizator www-date;
worker_proceses auto;
pid /run/nginx.pid;
includ /etc/nginx/modules-enabled/*.conf;

evenimente {
    conexiuni_muncitor 1024;
    # multi_accept on;
}

http {

    geo $limit {
        implicit 1;
        192.168.192.51 0;
    }
 
    harta $limit $limit_key {
            0 "";
            1 $adresă_binară_la distanță;
    }
 
    limit_req_zone $limit_key zone=req_zone:10m rate=100r/s;

    ##
    # Setări de bază
    ##

    sendfile activat;
    tcp_nopush activat;
    tcp_nodelay activat;
    keepalive_timeout 65;
    types_hash_max_size 2048;
    # server_tokens off;

    # server_names_hash_bucket_size 64;
    # server_name_in_redirect off;

    includ /etc/nginx/mime.types;
    aplicație de tip_default/octet-stream;

    ##
    # Setări SSL
    ##

    ssl_protocols TLSv1 TLSv1.1 TLSv1.2 TLSv1.3; # Eliminarea SSLv3, ref: POODLE
    ssl_prefer_server_ciphers activat;

    ##
    # Setări de înregistrare
    ##

    error_log /var/log/nginx/error.log warn;
    log_format main_ext '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for" ' '"$host" sn="$server_name" '' rt=$request_time ' 'ua="$upstream_addr" us="$upstream_status" ' 'ut="$upstream_response_time" ul="$upstream_response_length" ' 'cs=$upstream_cache_status' ;
    access_log /var/log/nginx/access.log main_ext;

    ##
    # Setări Gzip
    ##

    gzip on;

    # gzip_vary on;
    # gzip_proxied orice;
    # gzip_comp_level 6;
    # gzip_buffers 16 8k;
    # gzip_http_version 1.1;
    # gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;

    ##
    # Configurații gazdă virtuală
    ##

    includ /etc/nginx/conf.d/*.conf;
    includ /etc/nginx/sites-enabled/*;

    fastcgi_buffers 8 16k;
        fastcgi_buffer_size 32k;
        fastcgi_connect_timeout 90;
        fastcgi_send_timeout 90;
        fastcgi_read_timeout 90;
}

Bloc de server

Server {
    asculta 80;
    asculta 81;

        root /data/www;

        index index.html index.htm index.php;

        nume_server 192.168.13.173;


        Locație / {
                try_files $uri $uri/ /index.php$is_args$args;
        }

    locație / proiect{
                alias /data/www/project/public;
                try_files $uri $uri/ @proiect;

                locație ~ \.php$ {
                        include snippets/fastcgi-php.conf;
                        fastcgi_param SCRIPT_FILENAME $request_filename;
                        fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;
                }
        }

        locație @proiect {
                rescrie /project/(.*)$ /project/index.php?/$1 ultimul;
        }


    locație ~ \.php$ {
                include snippets/fastcgi-php.conf;
                fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;
        }

        locație ~ /\.ht {
                nega totul;
        }


}
djdomi avatar
drapel za
Dacă serverul dvs. este ocupat, aceasta este o reacție normală, ați încercat `worker_connections 10240;` (valoarea de 10x), totuși, căutați https://www.nginx.com/blog/rate-limiting-nginx/ poate niște limes acolo un fel de ascuns
djdomi avatar
drapel za
Cu toate acestea, deoarece o mulțime de apeluri API pot fi stocate în cache, v-aș sugera să aruncați o privire la `set $memcached_key "$uri?$args"; gazdă memcached_pass:11211; ` s-ar putea de asemenea să vă îmbunătățească serverul ;) este necesar un memcached instalat pentru a utiliza acest lucru
Dan avatar
drapel cn
Dan
Mulțumesc, dar cred că ceva este în neregulă cu această abordare. Nicio modificare nici măcar după ce am adăugat această listă albă cu limită de rate. Deci presupun că îmi lipsește ceva aici?
drapel sv
Conform jurnalului de acces furnizat în OP, codul de stare este afișat ca 429 (Prea multe solicitări). Cu toate acestea, Nginx trimite implicit 503. Ref: https://nginx.org/r/limit_req_status Limitarea ratei devine efectivă în Nginx numai dacă sunt configurate atât `limit_req_zone`, cât și `limit_req`. Configurația dvs. lipsește directiva `limit_req`. Bănuiesc că limitarea ratei nu este eficientă în Nginx sau nu ați furnizat configurația completă. Consultați exemplul de configurare pentru cazul dvs. de utilizare... https://www.nginx.com/blog/rate-limiting-nginx/#Advanced-Configuration-Examples
Dan avatar
drapel cn
Dan
Ai dreptate @PothiKalimuthu, acest lucru nu a fost generat de la Nginx. Acest lucru a fost aplicat din cod (Laravel Framework). Am fost dor condus de jurnalul de acces. Am crezut că acest lucru a fost generat de la Nginx uitându-mă la jurnalul de acces

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.