nginx的匹配及重定向

发布于:2024-07-05 ⋅ 阅读:(16) ⋅ 点赞:(0)

一、nginx的匹配:

nginx中location的优先级和匹配方式:

1.精确匹配:location = / 对字符串进行完全匹配,必须完全符合

2.正则匹配:location ^~

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

~区分大小写的匹配

~* 不区分大小写

!~:区分大小写取反

!~*:不区分大小写的取反

3.一般匹配:location / 字符串

4.location的优先级:精确匹配 > 正则匹配 > 区分大小写 > 一般匹配

5.实际网站中的使用规则:

第一个:网站的首页:

location = /{ 

 root html;

 index    index.html  index.html  index.php;

}

第二个:必选规则,处理静态请求的页面

location ^~ /static {

root/web/stsatic/;

index    index.html  index.html  index.php;

}

location ~*\. (ipg.gif | ipeg |  cess)$ {

root/web/picturs/;

index    index.html  index.html  index.php;

}:访问图片或着是指定的后缀面

第三个:一般是通用规则,用来转发.php或者.js为后缀的动态请求到后端服务器(数据库)

location / {

proxy_pass

}: 转发后端请求和负载均衡

练习:

1、http://www.example.com/gallery/images/cat.png

A.location /gallery { }
B.location ^~* /.(png|jpg)$ { }
C.location = /gallery/images { }
D.location / { }
选择:B

解析:

A,一般匹配,只能匹配到gallery目录下面的文件

B,匹配的是/目录下面,png结尾的文件

C,精确匹配要完整路径,/gallery/images/cat.png

D,一般匹配匹配所有

2.如果访问/abcd 会匹配到哪个config?
A.location ~ /abc { }
B.location /abc { }
C.location ^~ /abc { }
选择:C

解析:

正则匹配,能匹配到,但是优先级没有C高
是匹配/abc下面的文件,匹配不了/abcd目录下面

二、rewrite重定向:就是把当前访问的页面跳转到其它页面。

      1. rewrite的工作方式:通过nginx的全局变量或者自定义变量,结合正则表达式和标志位实现url的重定向。

      2.nginx的变量

      $uri  客户端请求的uri地址 

      $host:请求的主机名

     $http_user_agent:客户端请求的浏览器和操作系统

     $http_referer:请求头的refe信息,表示当前页面来源的url

     $remote_addr:客户端的IP地址

     $remote_port:客户端的端口号

     $server_addr:服务端的IP地址

     $server_port:服务端的端口号

     $request_method:获得客户端请求的方法

     $scheme:请求的协议,要么是http要么是https

     x_forwarded_for:用来获取请求头当中客户端的真实p地址,代理服务器添加,在代理服务器当中指示宫户端的ip地址

     X-Real-!R: 客户端真实的ip地址。
     proxy_set _header X-Real-IP $remote addr 加上这一字段,客户端的真实ip地址就会传递给后端服务器。

  3.flag标志位:

permanent:永久重定向,返回码是301,浏览器地址栏会显示跳转后的url地址

redirect:临时重定向,返回码是302,浏览器地址栏会显示跳转后的url地址

break:永久重定向,返回码也是301,但是它匹配到规则之后不会再向下匹配其它规则,url也不会发生变化

last:重定向,但是会继续向下匹配其它的location规则, 在重定向的过程中,使用了last方式进行重定向,但是,没有结束语,陷入了死循环,nginx会自动循环10次,last匹配最多只能执行10次,超过10次没有结束,就会停止,报错500

4.rewrite的执行顺序:

server模块的rewrite优先级最高

匹配location的规则

执行选定的location规则

5.rewrite的语法

rewrite :正则表达式,跳转后的内容 标志位

三、实验:

1.基于域名进行跳转,老的不用了,但是依然可以访问,统统跳转到新的域名

2.#基于客户端的ip进行跳转 公司有新业务上线,测试阶段,其他的ip只能显示维护中,只有192.168.223.61能正常访问。

 

 


网站公告

今日签到

点亮在社区的每一天
去签到