nginx 正则表达式 匹配

1.正则表达式匹配

~   区分大小写匹配 
~*  不区分大小写匹配 
!~  区分大小写写不匹配
!~* 不区分大小写不匹配 
^   以什么开头的匹配
$   以什么结尾的匹配
\   转移字符,可以转义 \. * ?等
*   代表任意字符

2、文件及目录匹配

-f和!-f用来判断是否存在文件

-d和!-d用来判断是否存在目录

-e和!-e用来判断是否存在文件或目录

-x和!-x用来判断文件是否可执行

示例:
location = /
#匹配任何查询,因为所有请求都已 / 开头。但是正则表达式规则和长的块规则将被优先和查询匹配

location ^~ /images/ {
# 匹配任何已/images/开头的任何查询并且停止搜索。任何正则表达式将不会被测试。

location ~* .(gif|jpg|jpeg)$ {
# 匹配任何已.gif、.jpg 或 .jpeg 结尾的请求

3.if指令

所有的Nginx内置变量都可以通过if指令和正则表达式来进行匹配,并且根据匹配结果进行一些操作,如下:

if ($http_user_agent ~ MSIE) {
  rewrite  ^(.*)$  /msie/$1  break;
}

if ($http_cookie ~* "id=([^;] +)(?:;|$)" ) {
  set  $id  $1;
}

使用符号~*和~模式匹配的正则表达式:

1.~为区分大小写的匹配。
2.~*不区分大小写的匹配(匹配firefox的正则同时匹配FireFox)。
3.!~和!~*意为“不匹配的”。
Nginx在很多模块中都有内置的变量,常用的内置变量在HTTP核心模块中,这些变量都可以使用正则表达式进行匹配。

4.可以通过正则表达式匹配的指令

location    = / { 
    # matches the query / only. 
    [ configuration A ]    
} 
location    / { 
    # matches any query, since all queries begin with /, but regular 
    # expressions and any longer conventional blocks will be 
    # matched first. 
    [ configuration B ]    
} 
location ^~ /images/ { 
    # matches any query beginning with /images/ and halts searching, 
    # so regular expressions will not be checked. 
    [ configuration C ]    
} 
location ~* \.(gif|jpg|jpeg)$ { 
    # matches any request ending in gif, jpg, or jpeg. However, all 
    # requests to the /images/ directory will be handled by 
    # Configuration C.        
    [ configuration D ]    
} 
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值