nginx之location模块

一、nginx的location的优先级和匹配方式

location匹配的是URI

一个http中有多个server,一个server中有多个location,如何确定匹配的是哪个location?

1、location匹配的分类:

匹配原则:location匹配一旦匹配成功,不再向下匹配

①精确匹配:location = /test{..}

URI要完整路径

②正则匹配:location ~/ {}

location ^~   前缀匹配,以什么开头

~区分大小写进行匹配

~*不区分大小写进行匹配

③一般匹配:location /test {}

2、location匹配的优先级

优先级:精确匹配>正则匹配>一般匹配

location正则匹配优先级:^~>~,~*

location = 完整路径>location ^~>location ~,~*>location /test>location /

(1)网站配置location的原则

1、网站首页——精确匹配(匹配网站的根目录)

2、处理静态文件的请求——目录匹配和后缀匹配

3、一般规则——动态请求,把动态请求转发到后端的处理动态页面服务器

(2)测试location匹配的优先级实验

1、vim /usr/local/nginx/conf/nginx.conf

nginx之location模块_第1张图片

2、在/opt目录下新建3个目录tupian1 tupian2 tupian3

3、在tupian1 tupian2 tupian3三个目录下分别放入三张不同的图片,同样命名为1.jpg

nginx之location模块_第2张图片nginx之location模块_第3张图片nginx之location模块_第4张图片

4、测试

nginx之location模块_第5张图片

结论:精准匹配优先级最高

nginx之location模块_第6张图片

nginx之location模块_第7张图片

结论:正则匹配的优先级其次高

5、总结:location的匹配优先级:精准匹配>正则匹配>一般匹配

nginx的重定向

rewrite结合nginx提供的全局变量和自定义变量,结合正则表达式以及标志位实现URL重写以及重定向

1、rewrite执行顺序

①执行server块里定义的rewrite

②执行location块里定义的rewrite

③选定location中的rewrite

rewrite中支持if语句,没有else

2、rewrite语法

rewrite [flag]

正则表达式

跳转的内容或路径

[flag]标志位:①last——本条规则匹配完成后继续向下匹配新的location URI规则

             ②break——本条规则匹配完成后立即终止,页面内容变化,URI不变(常用)

             ③redirect——临时重定向,返回状态码302,URI变化

             ④permanent——永久重定向,返回状态码301,URI变化

redirect和permanent的区别:

影响搜索引擎的权重,永久重定向会加入搜索引擎的排名,临时不会加入搜索引擎的排名

permanent永久重定向

nginx之location模块_第8张图片

nginx之location模块_第9张图片

nginx之location模块_第10张图片

nginx之location模块_第11张图片

break跳转不会改变URI

nginx之location模块_第12张图片

nginx之location模块_第13张图片

nginx之location模块_第14张图片

三、实验

1、基于域名的跳转实验

需求:www.kgc.com业务变更,迁移到新的域名www.bnet.com,旧的域名不能废除(访问kgc可以跳转到bnet,且参数不变——URI不变)

nginx之location模块_第15张图片

域名映射

火狐浏览器测试:输入www.yst.com跳转到www.yyy.com

nginx之location模块_第16张图片

2、基于IP访问跳转实验

需求:公司业务新版本上线,要求用户访问网站统一显示固定的维护页面。只有公司内网20.0.0.11可以访问,其他都是维护页面

20.0.0.11——公司内网,不合法,显示“我正在维修操作nginx页面 ”

20.0.0.21——外网ip,合法,显示“维护中。。。”

nginx之location模块_第17张图片

在location中指定了index.html和weihu.html的路径,创建文件的位置不能变动,否则匹配不到文件

在文件中写入内容

nginx之location模块_第18张图片nginx之location模块_第19张图片

测试

nginx之location模块_第20张图片nginx之location模块_第21张图片

你可能感兴趣的:(nginx,服务器,运维)