location表达式类型
~ 表示执行一个正则匹配,区分大小写
~* 表示执行一个正则匹配,不区分大小写
^~ 表示普通字符匹配。使用前缀匹配。如果匹配成功,则不再匹配其他location。
= 进行普通字符精确匹配。也就是完全匹配。
@ 它定义一个命名的 location,使用在内部定向时,例如 error_page, try_files
location优先级说明
在nginx的location和配置中location的顺序没有太大关系。正location表达式的类型有关。相同类型的表达式,字符串长的会优先匹配。
以下是按优先级排列说明:
1.等号类型(=)的优先级最高。一旦匹配成功,则不再查找其他匹配项。
2.^~类型表达式。一旦匹配成功,则不再查找其他匹配项。
3.正则表达式类型(~ ~*)的优先级次之。如果有多个location的正则能匹配的话,则使用正则表达式最长的那个。
4.常规字符串匹配类型。按前缀匹配。
下面是基于不同的几种情况的跳转,在做实验之前先在真机hosts文件里面做一个域名映射
找到hosts文件之后把复制到桌面上,不能在文件夹里面直接修改否则会报错,如下图所示
修改之后保存,然后拉到文件里面进行替换目标文件,之后用真机ping一下域名看下是否能够ping通过
[[email protected] ~]# vi /usr/local/nginx/conf/nginx.conf
现在配置文件中修改
[[email protected] ~]# systemctl restart nginx
然后在真机上输入域名先测试一下网页是否正常
现在测试网页显示正常
测试正常之后开始下面的实验
1.基于域名的跳转
[[email protected] ~]# systemctl restart nginx
现在网页里输入www.51xit.top,回车
发现会自动跳到www.52xit.top这个域名
2.基于客户端ip访问的跳转
[[email protected] ~]# vi /usr/local/nginx/conf/nginx.conf
[[email protected] ~]# systemctl restart nginx
3.基于旧域名跳转到新域名后面加目录
[[email protected] ~]# vi /usr/local/nginx/conf/nginx.conf
[[email protected] ~]# systemctl restart nginx
4.基于参数匹配的跳转
[[email protected] ~]# vi /usr/local/nginx/conf/nginx.conf
[[email protected] ~]# systemctl restart nginx
回车
5.基于目录下所有php结尾的文件跳转,访问 http://www.51xit.top/upload/1.php
回车,页面不跳转
这边小编就不一一测试了