location匹配的规则和优先级、重定向

location匹配的分类:

  • 精确匹配:
    location =
  • 正则匹配:
    location ~ 区分大小写进行匹配
    location ^~ 前缀匹配
    location ~* 不区分大小写进行匹配
    location !~ 对区分大小写的结果取反
    location !~* 对不区分大小写的结果取反
  • 一般匹配:
    location /test 通用匹配
    location / 通用匹配

优先级(从上往下优先级降低):

  • 精确匹配(location =)
  • 正则表达式
    • location ^~
    • location ~*
  • 带路径的通用匹配(location /test)
  • 通用匹配(location /)

如何配置location比较合理?最起码要有这三个location:

  • location = /
    一般用于网站的首页,用精确匹配,一般是静态页面,也可以是发送到后端的动态页面
  • 处理静态文件:
    • 开头匹配:以什么为开头的正则匹配
      location ^~ /static
    • 匹配后缀名
      location ~* \. (html|png|jpg)$
  • 一般匹配:用来转发动态请求
    location / {
      proxy_pass #转发.jsp或者.php的动态页面请求
    }
重定向

rewrite:结合正则表达式实现uri的重写以及定向(页面跳转),只能写在:server、location、if语句三个模块中

nginx的内置变量:

  • $uri:客户端请求的uri

  • $host:请求的主机名

  • $remote_port:客户端请求的端口

rewrite语法:

  • rewrite <正则表达式> <表示跳转后的内容> flag

flag(标记位)有几种:

  • redirect:临时重定向,302

  • permanent:永久重定向,301

  • break:本条规则匹配完成之后即停止,不再匹配其他跳转规则,URI的地址不会发生变化。就是说根据这条规则跳转后,即使跳转后的规则还需要继续跳转也不会接着跳了。

  • last:本条规则匹配之后如果匹配到的规则还要继续跳转,那么就会继续向下匹配新的location uri的规则,也不会改变URI。

    • nginx内部语法last方式,最多只能循环10次,超过会返回500的状态码,error.log报错如下:internal redirection cycle while processing

(.*)的作用:

比如:rewrite /test/(.*) /ky01/$1 redirect

  • (.*)是捕获组,$1获取捕获值

  • 比如说访问:www.baidu.com/test/1.png
    根据上面的规则会转到:www.baidu.com/ky01/1.png
    1.png就是(.*)捕获到的内容,然后传给了$1

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值