Nginx 配置之 location 配置
1、location 作用
location 用于匹配用户访问的URL,来适用哪一个目录中的资源
2、location 的常用匹配规则
字符 | 涵义 |
---|---|
= | 进行普通字符精确匹配,也就是完全匹配 |
^~ | 表示普通字符匹配。使用前缀匹配。如果匹配成功,则不再匹配其它 location |
~ | 区分大小写的匹配 |
~* | 不区分大小写的匹配 |
!~ | 区分大小写的匹配取非 |
!~* | 不区分大小写的匹配取非 |
3、location 的 优先级与匹配规则
首先是 精确匹配
=
。匹配优先级最高。一旦匹配成功,则不再查找其他匹配项。eg: location = /test/ { }
其次是 前缀匹配
^~
。一旦匹配成功,则不再查找其他匹配项。eg: location ^~ /test/ { }
其次是按文件中顺序的正则匹配
~
(区分大小写) 或~*
(忽略大小写)eg: location ~ /test/ { }
然后是一般匹配 ,后面不带 / 的匹配。遵循最长匹配原则。
eg: locaton /test/ { }
最后是 交给 / 通用匹配
eg: location / { }
@
: 定义一个命名的 location,使用在内部定向时,例如 error_pageeg:@error_page {}
匹配规则:
- 首先看匹配的优先级:精确匹配 > 前缀匹配 > 正则匹配 > 一般匹配 > 通用匹配
- 首先匹配精确匹配。
- 当没有精确匹配,只有前缀匹配或正则匹配时,同等级的优先级遵循匹配即停止原则。即当都是正则匹配时,哪个localtion 写在配置文件的上面,就匹配哪个。
- 一般匹配,则遵循最长匹配原则,当只有一般匹配符合时,哪个location 匹配的url 最长,则使用哪个。但是,如果有符合规则的精确匹配,前缀匹配,正则匹配,则使用优先级高的。
4、location 示例说明
1 |
|
5、location URI结尾带不带 /
- 如果 URI 结构是
https://domain.com/
的形式,尾部有没有 / 都不会造成重定向。因为浏览器在发起请求的时候,默认加上了 / 。虽然很多浏览器在地址栏里也不会显示 / 。这一点,可以访问百度验证一下。 - 如果 URI 的结构是
https://domain.com/some-dir/
。尾部如果缺少 / 将导致重定向。因为根据约定,URL 尾部的 / 表示目录,没有 / 表示文件。所以访问 /some-dir/ 时,服务器会自动去该目录下找对应的默认文件。如果访问 /some-dir 的话,服务器会先去找 some-dir 文件,找不到的话会将 some-dir 当成目录,重定向到 /some-dir/ ,去该目录下找默认文件
Nginx 配置之 location 配置
https://flepeng.github.io/040-Nginx-11-安装和配置-Nginx-配置之-location-配置/