limit_req,排除PHP文件和路由



我有一个显示图像的脚本,我正在尝试将以下php路由从limit_req

排除
rewrite ^/([^@]*)@(d+xd+)$ /index.php?route=image&action=show&path=$1&size=$2 break;

我有

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;
}

对于我使用的图像和其他文件格式

location ~* ^.+.(jpg|jpeg|gif|png|svg|ico|css|less|xml|html?|swf|js|ttf)$ {
    expires 10y;
}

那么,如何从limit_req中排除nginx config的路由(index.php?route = image)?

le:

我尝试了类似的操作,但我收到了一个错误" nginx:[egry]无效参数" off"

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 ~ "/foo/(.+)$" {
        limit_req off;
    }
}
http {
   .....
      map $arg_route $limit {
      default $binary_remote_addr;
      "image" "";
    }
      limit_req_zone $limit zone=one:10m rate=3r/s;
   .....
}
server {
    .....
    limit_req zone=one burst=5;
    .....
}

我希望无需在这里解释一些东西,一切都清楚。使用 MAP 更好,因为Ifisevil。您还可以用$ request_uri替换$ arg_route。

最新更新