limit_req,排除php文件和路由

时间:2017-11-21 09:28:49

标签: php nginx

我有一个显示图片的脚本,我试图从limit_req中排除以下php路由

rewrite ^/([^\@]*)\@(\d+x\d+)$ /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;
}

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

LE

我尝试了类似的但是我收到错误" nginx:[emerg]无效参数" 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;
    }
}

1 个答案:

答案 0 :(得分:0)

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

我希望没有必要在这里解释一切,一切都很清楚。使用地图会更好,因为ifisevil。 你也可以用$ request_uri替换$ arg_route。