Enable rate_limit nginx pe vestacp

AnoniMouse

Active Member
Registered
Full Member
Salut!

Se pricepe cineva sa adauge rate_limit: Doc pe VestaCp.
Am incercat, dar ceva nu merge bine. Nu functioneaza.

Acesta este fisierul meu
/etc/nginx/nginx.conf

Cod:
# Server globals
user                    nginx;
worker_processes        auto;
worker_rlimit_nofile    65535;
error_log               /var/log/nginx/error.log crit;
pid                     /var/run/nginx.pid;


# Worker config
events {
        worker_connections  1024;
        use                 epoll;
        multi_accept        on;
}


http {
    # Main settings
    sendfile                        on;
    tcp_nopush                      on;
    tcp_nodelay                     on;
    client_header_timeout           1m;
    client_body_timeout             1m;
    client_header_buffer_size       2k;
    client_body_buffer_size         256k;
    client_max_body_size            256m;
    large_client_header_buffers     4   8k;
    send_timeout                    30;
    keepalive_timeout               60 60;
    reset_timedout_connection       on;
    server_tokens                   off;
    server_name_in_redirect         off;
    server_names_hash_max_size      512;
    server_names_hash_bucket_size   512;


    # Log format
    log_format  main    '$remote_addr - $remote_user [$time_local] $request '
                        '"$status" $body_bytes_sent "$http_referer" '
                        '"$http_user_agent" "$http_x_forwarded_for"';
    log_format  bytes   '$body_bytes_sent';
    #access_log          /var/log/nginx/access.log main;
    access_log off;


    # Mime settings
    include             /etc/nginx/mime.types;
    default_type        application/octet-stream;


    # Compression
    gzip                on;
    gzip_vary           on;
    gzip_comp_level     9;
    gzip_min_length     512;
    gzip_buffers        8 64k;
    gzip_types          text/plain text/css text/javascript text/js text/xml application/json application/javascript application/x-javascript application/xml application/xml+rss application/x-font-ttf image/svg+xml font/opentype;
    gzip_proxied        any;
    gzip_disable        "MSIE [1-6]\.";


    # Proxy settings
    proxy_redirect      off;
    proxy_set_header    Host            $host;
    proxy_set_header    X-Real-IP       $remote_addr;
    proxy_set_header    X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_pass_header   Set-Cookie;
    proxy_connect_timeout   90;
    proxy_send_timeout  90;
    proxy_read_timeout  90;
    proxy_buffers       32 4k;


    # Cloudflare https://www.cloudflare.com/ips
    set_real_ip_from   103.21.244.0/22;
    set_real_ip_from   103.22.200.0/22;
    set_real_ip_from   103.31.4.0/22;
    set_real_ip_from   104.16.0.0/12;
    set_real_ip_from   108.162.192.0/18;
    set_real_ip_from   131.0.72.0/22;
    set_real_ip_from   141.101.64.0/18;
    set_real_ip_from   162.158.0.0/15;
    set_real_ip_from   172.64.0.0/13;
    set_real_ip_from   173.245.48.0/20;
    set_real_ip_from   188.114.96.0/20;
    set_real_ip_from   190.93.240.0/20;
    set_real_ip_from   197.234.240.0/22;
    set_real_ip_from   198.41.128.0/17;
    #set_real_ip_from   2400:cb00::/32;
    #set_real_ip_from   2606:4700::/32;
    #set_real_ip_from   2803:f800::/32;
    #set_real_ip_from   2405:b500::/32;
    #set_real_ip_from   2405:8100::/32;
    #set_real_ip_from   2c0f:f248::/32;
    #set_real_ip_from   2a06:98c0::/29;
    real_ip_header     CF-Connecting-IP;


    # SSL PCI Compliance
    ssl_session_cache   shared:SSL:10m;
    ssl_protocols       TLSv1 TLSv1.1 TLSv1.2;
    ssl_prefer_server_ciphers on;
    ssl_ciphers        "ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA256:ECDHE-RSA-AES256-SHA:ECDHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES128-SHA256:DHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES256-GCM-SHA384:AES128-GCM-SHA256:AES256-SHA256:AES128-SHA256:AES256-SHA:AES128-SHA:DES-CBC3-SHA:HIGH:!aNULL:!eNULL:!EXPORT:!DES:!MD5:!PSK:!RC4";


    # Error pages
    error_page          403          /error/403.html;
    error_page          404          /error/404.html;
    error_page          502 503 504  /error/50x.html;


    # Cache settings
    proxy_cache_path /var/cache/nginx levels=2 keys_zone=cache:10m inactive=60m max_size=1024m;
    proxy_cache_key "$host$request_uri $cookie_user";
    proxy_temp_path  /var/cache/nginx/temp;
    proxy_ignore_headers Expires Cache-Control;
    proxy_cache_use_stale error timeout invalid_header http_502;
    proxy_cache_valid any 1d;


    # Cache bypass
    map $http_cookie $no_cache {
        default 0;
        ~SESS 1;
        ~wordpress_logged_in 1;
    }


    # File cache settings
    open_file_cache          max=10000 inactive=30s;
    open_file_cache_valid    60s;
    open_file_cache_min_uses 2;
    open_file_cache_errors   off;


    # Wildcard include
    include             /etc/nginx/conf.d/*.conf;

}

Platesc daca este nevoie.
 
depinde ce ai incercat si ce eroare ti-a dat, e posibil ca ceva din ce ai scris sa fie disponibil doar pentru nginx plus.
also, nginx -t iti spune exact unde e eroarea, dai un search cu ea pe google si vezi ca mai sunt si altii cu aceeasi, gasesti raspunsul bun si that's it.
 
depinde ce ai incercat si ce eroare ti-a dat, e posibil ca ceva din ce ai scris sa fie disponibil doar pentru nginx plus.
also, nginx -t iti spune exact unde e eroarea, dai un search cu ea pe google si vezi ca mai sunt si altii cu aceeasi, gasesti raspunsul bun si that's it.
Nu mi-a dat nicio eroare. pur si simplu deschid 20 link-uri deodata si tot nu ma blocheaza.
 
cam greu sa deschizi 20 link-uri intr-o singura secunda, ca numai browserului ii ia vreo 3 ca sa intre pe pagina+ animatii de new tab...
un test ca lumea il poti face doar din backend cmd.. altfel e posibil sa mearga si sa nu ti dai seama
 
Presupun ca vrei sa limitezi numarul de conexiuni simultane nu?
In vesta acolo la simple edit (tu ai avansat in primul post) ai doua sectiunei care iti limitea numarul de conexiuni
worker_processes auto;
worker_connections 1024;

Daca vrei sa limitezi doar 1 conexiune per secunda poti adauga asa:
Cod:
limit_req_zone $request_uri zone=zone1:10m rate=300r/m;
limit_req_zone $request_uri zone=zone2:10m rate=5r/s;

Amundoua sunt la fel, adica volumul de conexiuni pe minut este acelasi, doar ca limiteaza numarul de conexiuni per secunda a doua. Cred ca intelegi logica nu?

Asta iti limiteaza numarul de conexiuni la 1 pe secunda.
Cod:
limit_req_zone  $binary_remote_addr  zone=one:10m   rate=1r/s;

Mai multe info gasesti aici NGINX Rate Limiting
 
Presupun ca vrei sa limitezi numarul de conexiuni simultane nu?
In vesta acolo la simple edit (tu ai avansat in primul post) ai doua sectiunei care iti limitea numarul de conexiuni
worker_processes auto;
worker_connections 1024;

Daca vrei sa limitezi doar 1 conexiune per secunda poti adauga asa:
Cod:
limit_req_zone $request_uri zone=zone1:10m rate=300r/m;
limit_req_zone $request_uri zone=zone2:10m rate=5r/s;

Amundoua sunt la fel, adica volumul de conexiuni pe minut este acelasi, doar ca limiteaza numarul de conexiuni per secunda a doua. Cred ca intelegi logica nu?

Asta iti limiteaza numarul de conexiuni la 1 pe secunda.
Cod:
limit_req_zone  $binary_remote_addr  zone=one:10m   rate=1r/s;

Mai multe info gasesti aici NGINX Rate Limiting

Pe mine ma intereseaza cum adaug:
limit_req_zone $binary_remote_addr zone=one:10m rate=1r/s;

in fisierul meu nginx
 
REZOLVARE:
Am pus:
Apache config:
limit_req_zone $binary_remote_addr zone=one:10m rate=1r/s;
in fisierul
/etc/nginx/nginx.conf

dupa am pus
Cod:
server {
    # ...
    location / {
        limit_req zone=one;
    # ...
    }
}
/home/admin/conf/web/nginx.$DOMAIN.conf-custom and /home/admin/conf/web/snginx.$DOMAIN.conf-custom

Am salvat, restart si gata!
Multumesc pentru raspunsuri!
 
Ultima editare:
e ok rate limit cand nu ai un site care sa depinda de google... altfel... sa blochezi unele din requesturile botilor...
 
Loading...
Back
Sus