NGINX & limit_req

Salutare la toti!

Am un script care afiseaza dinamic imagini de pe server si vreau sa-l exclud din filtrarea nginx-ului. (limit_req)

index.php?route=image&path=path_to_file&size=250x250

rewrite ^/([^\@]*)\@(\d+x\d+)$ /index.php?route=image&path=$1&size=$2 break;

In config-ul NGINX-ului am

location ~ .php$ {
    limit_req zone=req_limit_per_ip burst=3 nodelay;
    limit_conn conn_limit_per_ip 3;

    include snippets/fastcgi-php.conf;
    fastcgi_pass unix:/run/php/php7.1-fpm.sock;
}

incearcasem ceva de genul:


location ~ .php$ {
    include snippets/fastcgi-php.conf;
    fastcgi_pass unix:/run/php/php7.1-fpm.sock;

    limit_req zone=req_limit_per_ip burst=3 nodelay;
    limit_conn conn_limit_per_ip 3;

    location ~ "/([^\@]*)\@(\d+x\d+)$" {
        limit_req off;
    }
}

dar se pare că nu există parametrul off

nginx: [emerg] invalid parameter "off"

Are careva o alta idee?

Sa nu fie of in loc de off

Mai degraba e incorectă sintaxa.

http://nginx.org/en/docs/http/ngx_http_limit_req_module.html
http://mailman.nginx.org/pipermail/nginx/2016-January/049673.html

1 Like

Try this:

location ~ .php$ {
    include snippets/fastcgi-php.conf;
    fastcgi_pass unix:/run/php/php7.1-fpm.sock;

    set $skip_limit_req 0;

    location ~ "/([^\@]*)\@(\d+x\d+)$" {
        set $skip_limit_req 1;
    }

    if($skip_limit_req = 0) {
       limit_req zone=req_limit_per_ip burst=3 nodelay;
       limit_conn conn_limit_per_ip 3;
    }
}

N-am testat sintaxa, dar (teoretic) ar trebui sa mearga. :slight_smile:

1 Like

nu merge sa pui limit_req in if

Ce eroare returneaza?

Daca returneaza [emerg] unknown directive "if($skip_limit_req" e pt ca am uitat sa pun spatiu dupa IF.

nginx: [emerg] “limit_req” directive is not allowed here in

nu poti pune limit_req in if din ce am citit pe net