nginx中的rewrite用法及实例

location表达式类型

~ 表示执行一个正则匹配,区分大小写
~* 表示执行一个正则匹配,不区分大小写
^~ 表示普通字符匹配。使用前缀匹配。如果匹配成功,则不再匹配其他location。
= 进行普通字符精确匹配。也就是完全匹配。
@ 它定义一个命名的 location,使用在内部定向时,例如 error_page, try_files

location优先级说明

在nginx的location和配置中location的顺序没有太大关系。正location表达式的类型有关。相同类型的表达式,字符串长的会优先匹配。

以下是按优先级排列说明:

1.等号类型(=)的优先级最高。一旦匹配成功,则不再查找其他匹配项。
2.^~类型表达式。一旦匹配成功,则不再查找其他匹配项。
3.正则表达式类型(~ ~*)的优先级次之。如果有多个location的正则能匹配的话,则使用正则表达式最长的那个。
4.常规字符串匹配类型。按前缀匹配。

下面是基于不同的几种情况的跳转,在做实验之前先在真机hosts文件里面做一个域名映射
nginx中的rewrite用法及实例_第1张图片
nginx中的rewrite用法及实例_第2张图片
找到hosts文件之后把复制到桌面上,不能在文件夹里面直接修改否则会报错,如下图所示

nginx中的rewrite用法及实例_第3张图片
修改之后保存,然后拉到文件里面进行替换目标文件,之后用真机ping一下域名看下是否能够ping通过

nginx中的rewrite用法及实例_第4张图片
[root@localhost ~]# vi /usr/local/nginx/conf/nginx.conf

现在配置文件中修改
nginx中的rewrite用法及实例_第5张图片
[root@localhost ~]# systemctl restart nginx

然后在真机上输入域名先测试一下网页是否正常
nginx中的rewrite用法及实例_第6张图片
现在测试网页显示正常

测试正常之后开始下面的实验

1.基于域名的跳转
nginx中的rewrite用法及实例_第7张图片
[root@localhost ~]# systemctl restart nginx
nginx中的rewrite用法及实例_第8张图片
现在网页里输入www.51xit.top,回车
nginx中的rewrite用法及实例_第9张图片
发现会自动跳到www.52xit.top这个域名

2.基于客户端ip访问的跳转

[root@localhost ~]# vi /usr/local/nginx/conf/nginx.conf

nginx中的rewrite用法及实例_第10张图片
[root@localhost ~]# systemctl restart nginx
nginx中的rewrite用法及实例_第11张图片

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

[root@localhost ~]# vi /usr/local/nginx/conf/nginx.conf
nginx中的rewrite用法及实例_第12张图片
[root@localhost ~]# systemctl restart nginx
在这里插入图片描述
在这里插入图片描述

4.基于参数匹配的跳转

[root@localhost ~]# vi /usr/local/nginx/conf/nginx.conf

nginx中的rewrite用法及实例_第13张图片
nginx中的rewrite用法及实例_第14张图片
[root@localhost ~]# systemctl restart nginx
nginx中的rewrite用法及实例_第15张图片
回车
nginx中的rewrite用法及实例_第16张图片

5.基于目录下所有php结尾的文件跳转,访问 http://www.51xit.top/upload/1.php

nginx中的rewrite用法及实例_第17张图片
nginx中的rewrite用法及实例_第18张图片
在这里插入图片描述
回车,页面不跳转
在这里插入图片描述
这边小编就不一一测试了

6.基于最普通一条utl请求的跳转

nginx中的rewrite用法及实例_第19张图片
在这里插入图片描述

你可能感兴趣的:(nginx,linux,php,正则表达式,java)