nginx的优先级和匹配方式

Nginx的location的优先级和匹配方式:

在http模块当中有server,在server模块才有location,location匹配的是uri

/test

/image

在一个server当中有多个location,如何来确定匹配那个location

Nginx支持正则表达式:

^:字符串的起始位置

$:字符串的结束位置

*:匹配所有

?:匹配前面的字符0次或一次

.:任意单个字符

{n}:连续重复出现次

{n,m}:连续出现n-m次

  1. z0-9A-Z]

c:匹配单个字符c

():分组

|:或

Location匹配的分类:

Location /

Location -*

  1. 精确匹配location=/test{..}

要填完整的路径,一个字符都不能少,不能错

  1. 正则匹配location ~ / {}

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

-:区分大小写进行匹配

~*:不区分大小写匹配

!-:区分大小写取反匹配

!-*:不区分大小写取反匹配

  1. location /test {}

一般匹配

Location匹配成功,不在继续向下匹配

小实验:

ocation匹配分优先级:

精确匹配优先级最高,第二优先级是正则匹配,一般或通用匹配优先级最低

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

工作当中配置location的原则是什么:(重要)

  1. 网首页:一律用精确匹配,网站首页一般都是一个静态页面内,一般都匹配网站的根工作目录 location= / {}
  2. 处理静态文件的请求:目录匹配和后缀匹配 location ^-/static {} 第二种方式用正则匹配location -*\. {html|jpg|jepg|gif|png}${}
  3. 一般规则:动态请求,把动态请求转发到后端的动态页面服务器

location / { proxy_pass http://tomcat.server}

Nginx的重定向:

Rewrite:结合了Nginx提供的全局变量和自定义的变量,结合正则表达式以及标志位实现url重写以及重 定向

Rewrite执行顺序:

  1. 先执行server块里面的rewrite
  2. 执行location里面定义的rewrite
  3. 选定location中的rewrite

Rewrite中可以支持if语句,但是不支持else语句

Rewrite语法:

Rewrite<regex><replacmnet>flag

<regex>:正则表达式

<replacmnet>:跳转的正则表达式

flag:标志位 "标记"

Flag:

Last:本条规则匹配完成后,继续向下匹配所有的location URI规则

Break:本条规则匹配完之后立即终止,页面内容变化,uri不变

Redirect:临时重定向302 uri的地址会发生变化

Permanent:永久重定向301 uri地址也会发生变化

rewrite /test/(.*) /ky32/$1 permanent;

.*:匹配所有

1:表示捕获组1引用正则表达式的第一个捕获组

www.ky32.com/test/index.html 1.jpg

www.ky32.com/ky32/index.html 1.jpg

搜索引擎的权重,永久重定向会加入搜索引擎的排名

临时不会加搜索引擎的权重

实验验证:

永久重定向

临时重定向

Break跳转,用的比较多,跳转的时候不会改变uri

Last:继续匹配

报错日志:

internal redirection cycle while processing

处理请求时发生了重写或者内部重定向循环,Nginx循环最多可以循环十次,超过十次会报错

解决方法:

总结:rewrite和location似乎两个都可跳转,但是区别在于rewrite是在同一域名之内更改获取资源的路径,location是对路径访问控制

三个实验:

  1. 基于域名的跳转

www.kgc.com但是公司业务变更,迁移到了新的域名www.benet.com代替,但是依旧不能被废除,访问kgc可以跳转到bennet,且匹配得分uri不能变

2.基于ip访问跳转

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

真机无法访问:

基于目录下.php访问.php跳转到新的页面

随后做一个映射

相关推荐
Lsetea6 分钟前
部署证书后提示“证书名称与输入不匹配”:Safari 报错的三层排查
nginx·https·safari·ssl证书·openssl
蓝速科技24 分钟前
会议室门牌签到功能选型与落地指南丨蓝速科技
大数据·运维·数据库·人工智能·科技
逐流人24 分钟前
Containerd容器管理实战:从架构原理到nerdctlcrictl工具链
linux·运维·云原生·容器·云计算·containerd
酣大智3 小时前
网络协议计时器 & 发包间隔汇总
运维·网络·tcp/ip
云运维笔记10 小时前
IP地址从入门到精通:网络通信的核心基石
运维·网络·计算机网络
码农学院11 小时前
企业官网改版后 AI 引用归零的复盘:301 重定向断层让爬虫索引掉线,修复方案与恢复数据
运维·geo优化·ai优化aio
kuroomi11 小时前
Ingress-Nginx与kubernetes 网络
linux·运维·网络·kubernetes
当下新鲜事11 小时前
空调机房冷冻泵与冷却泵技术分析:赛莱默B&G背包式智能变频管道泵的工程应用
运维·物联网·业界资讯
Doris__HE13 小时前
【元脑服务器NF5476G7-NF5476M7技术规格分享】
运维·服务器·网络·数据库·性能优化
打工仔折腾 AI14 小时前
FastAPI 从本机到生产服务器:Nginx+Gunicorn+Uvicorn 完整部署实录
人工智能·后端·python·nginx·fastapi·gunicorn