Nginx匹配功能(location)和重写功能(rewrite)


一、Nginx常见模块

http
http块,是Nginx服务器配置中的重要部分,代理、缓存和日志定义等绝大多数的功能和第三方模块的配置都可以放在这模块中。作用包括:文件引入、MIME-Type定义、日志自定义、是否使用sendfile传输文件、连接超时时间、单连接请求数上限等。

server
server块,虚拟主机(虚拟服务器)。作用:使得Nginx服务器可以在同一台服务器上只要运行一组Nginx进程,就可以运行多个网站。

location
location块,是server块的一个指令。作用:基于Nginx服务器接收到的请求字符串,虚拟主机名称(ip,域名)、url匹配,对特定请求进行处理

二、location

2.1 location常用正则表达式

^ :匹配输入字符串的起始位置
$ :匹配输入字符串的结束位置
* :匹配前面的字符零次或多次。如“ol*”能匹配“o”及“ol”、“oll”
+ :匹配前面的字符一次或多次。如“ol+”能匹配“ol”及“oll”、“olll”,但不能匹配“o”
? :匹配前面的字符零次或一次,例如“do(es)?”能匹配“do”或者“does”,”?”等效于”{
   0,1}. :匹配除“\n”之外的任何单个字符,若要匹配包括“\n”在内的任意字符,请使用诸如“[.\n]”之类的模式
\ :将后面接着的字符标记为一个特殊字符或一个原义字符或一个向后引用。如“\n”匹配一个换行符,而“\$”则匹配“$”
\d :匹配纯数字
\w :匹配字母或数字或下划线或汉字
\s :匹配任意的空白符
\b :匹配单词的开始或结束
{
   n} :重复 n 次
{
   n,} :重复 n 次或更多次
{
   n,m} :重复 n 到 m 次
[] :定义匹配的字符范围
[c] :匹配单个字符 c
[a-z] :匹配 a-z 小写字母的任意一个
[a-zA-Z0-9] :匹配所有大小写字母或数字
() :表达式的开始和结束位置 例如:(jpg|gif|swf|)
| :或运算符

2.2 location的分类

  1. 精准匹配:location = / {…}

  2. 一般匹配:location / {…}

  3. 正则匹配:location ~ / {…}

2.3 location 常用的匹配规则

=	:进行普通字符精确匹配。也就是完全匹配
^~	:表示普通字符匹配。使用前缀匹配。如果匹配成功,则不再匹配其他 location
~	:表示执行一个正则匹配,区分大小写
~*	:表示执行一个正则匹配,不区分大小写
!~	:表示执行一个正则匹配,区分大小写不匹配
!~*	:表示执行一个正则匹配,不区分大小写不匹配

2.4 location优先级排列说明

首先,精确匹配 =

其次,前缀匹配 ^~

其次,是按文件中顺序的正则匹配 ~ 或 ~*

然后,匹配不带任何修饰的前缀匹配

最后,是交给 / 通用匹配

location = / {
   
     [ configuration A ]
}
 
location / {
   
     [ configuration B ]
}
 
location /documents/ {
   
     [ configuration C ]
}
 
location ^~ /images/ {
   
     [ configuration D ]
}
 
location ~* \.(gif|jpg|jpeg)$ {
   
     [ configuration E ]
}

2.5 location 示例

精确匹配

location = / {
   }
=为精确匹配 / , 主机名后不能携带任何字符串,比如 //data ,/匹配,/data不匹配

一般匹配/通用匹配

location / {
   }
代表以/开头,所以这条规则将匹配所有的请求

location /documents/ {
   }
匹配任何以/documents/开头的地址,匹配符合后,还会继续往下搜索其他 location,只有其它location后面的正则表达式没有匹配到时,才会用这一条

location /documents/abc {
   }
匹配任何以/documents
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值