nginx的配置、虚拟主机、负载均衡和反向代理一
nginx的配置、虚拟主机、负载均衡和反向代理二
nginx的配置、虚拟主机、负载均衡和反向代理三
nginx配置location总结及rewrite规则写法 --- 很棒
一文弄懂Nginx的location匹配 --- 很棒
主要功能
- 负载均衡
- 反向代理
- 动静分离
- 配置https
location
-
语法规则
location [ = | ~ | ~* | ^~ ] uri { ... }
location @name { ... }
一个location关键字,后面跟着可选的修饰符,后面是要匹配的字符,花括号中是要执行的操作。
- 修饰符
- =:精确匹配。只有请求的url路径与后面的字符串完全相等时,才会命中。
- ~:该规则是使用正则定义的,区分大小写。
- ~*:该规则是使用正则定义的,不区分大小写。
- ^~:如果该符号后面的字符是最佳匹配,采用该规则,不再进行后续的查找。
- 匹配过程
- 对请求的url序列化。例如,对%xx等字符进行解码,去除url中多个相连的/,解析url中的.,..等。这一步是匹配的前置工作。
- location有两种表示形式,一种是使用前缀字符,一种是使用正则。如果是正则的话,前面有或*修饰符。
具体的匹配过程如下:
首先先检查使用前缀字符定义的location,选择最长匹配的项并记录下来。
如果找到了精确匹配的location,也就是使用了=修饰符的location,结束查找,使用它的配置。
然后按顺序查找使用正则定义的location,如果匹配则停止查找,使用它定义的配置。
如果没有匹配的正则location,则使用前面记录的最长匹配前缀字符location。
基于以上的匹配过程,我们可以得到以下两点启示:
使用正则定义的location在配置文件中出现的顺序很重要。因为找到第一个匹配的正则后,查找就停止了,后面定义的正则就是再匹配也没有机会了。
使用精确匹配可以提高查找的速度。例如经常请求/的话,可以使用=来定义location。
网友评论