nginx优先级和匹配方式

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

Nginx正则表达式:

^:字符串的起始位置

$:字符串的结束位置

*:匹配所有

+:匹配前面的字符一次或多次

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

.:任意单个字符

{n}:连续重复出现n次

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

a-z,0-9,A-Z

():分组

|:或

Location匹配的分类

  1. 精确匹配 location = /test {......} | 完整的路径 一个字也不能少 也不能错
  2. 正则匹配 location ~ / {......} | {
  3. Location ^~ :前缀匹配 以什么为开头
  4. ~:区分大小写进行匹配
  5. ~*:不区分大小写进行匹配
  6. !~:区分大小写取反匹配
  7. !~*:不区分大小写取反匹配
  8. }
  9. 一般匹配 location/test {}

Location 一旦匹配成功 不再向下匹配

Location匹配的优先级:精确匹配的优先级最高>正则匹配>一般匹配

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

配置location的原则:

网站首页都是精确匹配 网站首页都是一个静态页面 匹配网站的根工作目录

Location = / { }

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

Location ^~ /static { }

Location ~*\.{html|jpg|jpep|gif|png}${ }

一般规则:动态请求 把动态请求转发到后端

Location / {

Proxy_pass http://tomcat server;

}

Nginx重定向:

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

rewrite执行顺序

1)、执行server块里面的rewrite

2)、执行location里面定义的rewrite

3)、选定location中的rewrite

Rewrite中可以if语句 只有if没有else

Rewrite语法: Rewrite <regex> <reolacemnet>[flag]

<regex>:正则表达式

<reolacemnet>:跳转的内容或者路径

flag\]:标志位 Last:本条规则匹配完成之后 继续向下匹配新的location URI规则 Break:本条规则匹配完之后立即终止 页面内容变化 URI不变 Redirect:临时重定向 302 URI的地址会发生变化 Permanent:永久重定向 301 URI地址会发生变化 ![](https://file.jishuzhan.net/article/1714958799711768578/4fe3945354d63a53f3914355a96ee9ed.webp) break跳转 跳转的时候不会改变uri 用的比较多 last 继续匹配 如果进入死循环 nginx最多循环10次 会报错500 总结: Rewrite和location都可以跳转 区别在于rewrite是在同一域名内更改获取资源的路径 location是对路径进行访问控制 实验1、基于域名的跳转 [www.kgc.com](http://www.kgc.com "www.kgc.com") 公司业务变更 迁移到新域名[www.benet.com](http://www.benet.com "www.benet.com") 代替 旧域名不能被废除 且参数不变 ![](https://file.jishuzhan.net/article/1714958799711768578/d7f48b1f4ffe366a3b877340cbe6c9a8.webp) 实验2、基于IP访问跳转 业务新版本上线 过程中用户看不到 用户访问网站提示页面维护 只有内网 192.168.233.61可以访问 实验3、基于结尾文件跳转 ![](https://file.jishuzhan.net/article/1714958799711768578/5fd91d93cad08a3a6209c3d400fc7139.webp) 总结: Location匹配的写法 Location = / 精确匹配 完全匹配 优先级最高 Location \^\~ Location \~\* 这两个是第二优先级 Location /test 第三优先级 Location / 第四优先级 Location是访问控制 匹配到之后不再向下继续匹配 网站设置location的规则 1. 精确匹配主要为了匹配首页 2. Location \^\~ location \~\* 进行指定内容匹配 3. Location / 主要为了做反向代理 把动态请求转发给后端服务器 Rewrite: Permanent 永久重定向 Redirect 临时重定向 Break 跳转 不会继续匹配 不改变URI Last 继续向下匹配 nginx只能循环十次 超过10次会报500

相关推荐
RisunJan3 小时前
Linux命令-ipcs命令(报告进程间通信(IPC)设施状态的实用工具)
linux·运维·服务器
HABuo4 小时前
【Linux进程(四)】进程切换&环境变量深入剖析
linux·运维·服务器·c语言·c++·ubuntu·centos
橘颂TA4 小时前
【Linux】死锁四条件的底层逻辑:从锁冲突到 STL 组件的线程安全实践(Ⅵ)
linux·运维·服务器·c++·死锁
黄焖鸡能干四碗5 小时前
智能制造工业大数据应用及探索方案(PPT文件)
大数据·运维·人工智能·制造·需求分析
橙露5 小时前
国产PLC与进口PLC全面对比分析:技术、市场与未来趋势
运维·网络
lbb 小魔仙5 小时前
【Linux】云原生运维效率提升:Linux 终端工具链(kubectl + tmux + fzf)组合拳教程
linux·运维·云原生
清水白石0085 小时前
解构异步编程的两种哲学:从 asyncio 到 Trio,理解 Nursery 的魔力
运维·服务器·数据库·python
Joren的学习记录6 小时前
【Linux运维大神系列】Kubernetes详解3(kubeadm部署k8s1.23高可用集群)
linux·运维·kubernetes
眠りたいです6 小时前
Docker核心技术和实现原理第二部分:docker镜像与网络原理
运维·网络·docker·容器