Nginx位置搜索终止匹配正则表达式

时间:2017-10-21 00:13:11

标签: http nginx ddos

我试图为静态内容设置不同的limit_req区域。

location ^~ /img {
  limit_req zone=static burst=60 nodelay;
}
location ^~ /logos {
  limit_req zone=static burst=60 nodelay;
}
location ^~ /js {
  limit_req zone=static burst=60 nodelay;
}
location ^~ /plugin {
  limit_req zone=static burst=60 nodelay;
}

location / {
  limit_req zone=protected burst=5 nodelay;
}

这很好用,但我想将这些位置压缩成一个正则表达式:

location ^~ /(img|logos|js|plugin) {
  limit_req zone=static burst=60 nodelay;
}

试过这个,但它没有用。仅适用于〜without ^,然后匹配位置/,将区域设置回protected。是^〜只使用文字?还有其他方法以干净的方式实现这一目标吗?

1 个答案:

答案 0 :(得分:0)

根据nginx documentation

以下位置在具有proxy_pass的位置之前定义,并且它与静态下的js和css文件的请求相匹配。此地点区块用于您希望在您的网站中允许的不同扩展程序。

location ~* \.(js|css|png|jpg|jpeg|gif|ico)$ {
    limit_req zone=static burst=60 nodelay;
    log_not_found off;
  }

或者,您可以使用此我认为这应该可以正常工作

location ~ ^/(img|logos|js|plugin)/ {
  root /project_root_path;
  limit_req zone=static burst=60 nodelay;
}