NGINX 知识总结

Location 匹配优先级

Nginx 配置中的 server 块中的 location 用来匹配请求 URI,以便对不通的 URI 进行不通的处理。

Location 类型 和 成功匹配的条件

  • location = expression {}   精准匹配,只有 URI 和 expression 完全相同,才算匹配成功;
  • location expression {}       普通匹配,只要 URI 前部分字符与 expression 相同就算匹配成功;
  • location ^~ expression {} 普通匹配,只要 URI 前部分字符与 expression 相同就算匹配成功;
  • location ~ regex {}             正则匹配(区分大小写);
  • location ~* regex {}           正则匹配(不区分大小写);

总结可分为三大类:精准匹配普通匹配正则匹配

匹配逻辑与优先级

对于一个进入 Nginx 的请求来讲,其 URI 可能符合多个 location 的匹配条件,但这条请求最终只会被一个 location 逻辑所处理(重定向不算),那么,匹配时肯定有优先级之分。Nginx 的匹配逻辑是这样的:

1. 执行精准匹配

若请求 URI 与 location = 相匹配(符合精准匹配条件),则执行该 location 的内容,不再进行其他匹配,否则见下一条。

2. 执行普通匹配

接下来 Nginx 会将 URI 与所有普通匹配的 location 进行比较(无论是 ^~ 类型还是无符号类型),然后找出匹配度最高的 location,若该 location^~ 类型,则停止匹配,执行该 location 内容;若匹配度最高的 location 为无符号类型,则保留这个无符号 location,继续进行下面的正则匹配;若 URI 不符合任何普通匹配 location 的条件,则直接进入下一步。

3. 执行正则匹配

正则的匹配与 location 的顺序相关,Nginx 会从上至下进行匹配,若匹配到一个 location,则执行该 location 逻辑,忽略后面所有的正则 location,终止匹配;若一个正则都没匹配上,则执行之前保留的那个无符号 location,若之前没有保留,则直接返回 404。

root 和 alias

// todo

access_log 与 error_log

// todo


Xavier 的技术博客
最近的关注重心: 1. 云原生 (Docker、Kubernetes) 2. 微服务 (网关 Kong、服务通讯 gRPC、通讯格式 Pro...

最近的关注重心:

426 声望
26 粉丝
0 条评论
推荐阅读
Linux 系统下如何将前台应用作为后台进程运行:nohup 与 & 命令的使用
COMMAND & 形式前台进程变为后台进程。如果不指定输出重定向(例如:COMMAND >out.log 2>&1 &),输出仍然打印到前台。退出 shell 会话(其父进程),进程会收到 HUP 信号,从而退出。在另一个...

Xavier阅读 686

一个HTTP请求的曲折经历
作为程序员的我们每天都在和网络请求打交道,而前端程序员接触的最多的就是HTTP请求。平时工作中,处理网络请求之类的操作是最多的了。但是一个请求从客户端发出到被服务端处理、再回送响应,再被客户端接收这一...

nero24阅读 4.9k评论 1

前端优化之 Http 相关优化总结
学习和总结文章同步发布于 [链接],有兴趣可以关注一下,一起学习和进步。Http 优化方式是前端性能优化的重要部分,也是前端必备的知识点之一。减少静态资源文件大小这个是最根本的途径,假设真的有个 10 几兆以...

Samon17阅读 3.1k

浏览器之HTTP缓存的那些事
简单来说,浏览器缓存就是把一个已经请求过的Web资源(如html,图片,js)拷贝一份副本储存在浏览器中。缓存会根据进来的请求保存输出内容的副本。当下一个请求来到的时候,如果是相同的URL,缓存会根据缓存机制...

Samon16阅读 9.4k评论 7

图片防盗链破解 解决图片防盗链问题 反向代理
当客户端(浏览器)向服务器请求内容的时候,会提交一个header,这个header中包含了如:浏览器信息、cookie等内容,那么有一个叫referer的东东,也包含在这里面。

TANKING7阅读 11.3k评论 5

Chrome 103支持使用本地字体,纯前端导出PDF优化
在前端导出PDF,解决中文乱码一直是一个头疼的问题。要解决这个问题,需要将ttf等字体文件内容注册到页面PDF生成器中。但是之前网页是没有权限直接获取客户机器字体文件,这时就需要从服务器下载字体文件或者提示...

葡萄城技术团队3阅读 13.9k

HTTP,WebSocket 和 聊天室
在涉及到网络层面的相关内容时,不免会联系到 HTTP、TCP、WebSocket 等,但相信大部分人都并不是很清楚其中的一些关系和概念,特别是需要你去做语言表述时,网上有不少优秀的资料和文章,但知识仍需要自己去消化...

熊的猫6阅读 961

封面图

最近的关注重心:

426 声望
26 粉丝
宣传栏