Nginx重写功能

本文详细介绍了Nginx的location模块,包括常用正则表达式、匹配规则和优先级。同时深入讲解了rewrite模块的功能,如URL重写、跳转场景及其执行顺序,并提供了多个实际操作示例。
摘要由CSDN通过智能技术生成

目录

一、Nginx常见模块

1.http

2.server

3.location

二、location

1.Nginx常用正则表达式

2.location 常用的匹配规则

3. location分类

(1)精确匹配

(2)一般匹配/通用匹配

(3)正则匹配

4.location优先级

(1)相同类型的表达式,字符串长的会优先匹配

(2)按优先级排列

5.三个匹配规则定义

(1)第一个规则

(2)第二个规则

(3)第三个规则

6. rewrite和location相比较

(1)相同点

(2)不同点

(3)rewrite会写在location里,执行顺序

二、REWRITE模块

1.rewrite功能

2. Rewrite 跳转场景

(1)场景一

(2)场景二

(3)场景三

(4)场景四

3. Rewrite 跳转实现

4.Rewrite 执行顺序

(1)执行server块里面的rewrite指令

(2)执行location 匹配

(3)执行选定的location中的rewrite指令

5.语法格式

(1)格式

(2)flag标记说明

6.例子(在nginx环境下)

1.例一

过程:

实现结果 

2.基于客户端IP 访问跳转

3. 基于旧域名跳转到新域名后面加目录

4. 基于参数匹配的跳转

5.基于目录下所有的php文件

6.基于普通的一条url


一、Nginx常见模块

1.http

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

2.server

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

3.location

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

二、location

1.Nginx常用正则表达式

字符 含义
. 匹配任意单个字符,可以是一个汉字
^ 行首锚定, 用于模式的最左侧
$ 行尾锚定,用于模式的最右侧
* 匹配前面字符任意次(包括0次)
? 0或1次
+ 1次或多次(1次或以上)
\ 转义符
\d 只匹配数字
{n} 重复n次
{n,} 至少n次(n次货以上)
{n,m} n到m次
[ ] 定义匹配字符的范围,只匹配一次
[c] 单个字符
[a-z] 匹配任意小写字母
[a-zA-Z0-9] 匹配任意字母和数字
() 表达式的开始和结束位置
a | b

或运算符a|b

2.location 常用的匹配规则

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

3. location分类

(1)精确匹配

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

(2)一般匹配/通用匹配

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

(3)正则匹配

location ^~ /images/ {} 
匹配任何已/images/ 开头的地址,匹配符合后,停止往下搜索,采用这一条
​
​
location ~* \.(gif|jpg|jpeg)$ {} 
匹配所有 gif jpg 或 jepg 结尾的请求
如果 有上面的location ^~ /images/ {}匹配  则会先匹配上一请求,所以到不了这一条

4.location优先级

(1)相同类型的表达式,字符串长的会优先匹配

(2)按优先级排列

     ①  = 类型的优先级最高。一旦匹配成功,则不再查找其他匹配项

    

     ②  ^~ 类型表达式,一旦匹配成功,则不再查找其他匹配项  

      

     ③  正则表达式(~和~*) 类型的优先级次之。常规字符串匹配类型,按前缀匹配 

      

     ④  通用匹配(/) , 如果没有其它匹配,任何请求都会匹配到

      

总结:

(location = 完整路径) > (location ^~ 完整路径) > (location ~* 完整路径) >(location ~ 完整路径)  > (location /)通用匹配

例题可以访问官方文档浏览协助理解

Module ngx_http_core_module

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值