location 指令的匹配命令如下:
~, 执行一个区分大小写的正则匹配.
~*, 执行一个不区分大小写的正则匹配.
^~, 普通字符匹配, 通常用于匹配目录.
=, 普通字符精确匹配.
@, 定义一个命名的 location, 用在内部定向中.
例如 error_page 或 try_files 中.
location 上下文的优先级与它在 nginx.conf 文件中的位置无关, 只与正则表达式的类型有关. 对于相同类型的表达式, 会优先匹配字符串长的 location.
第一优先级,= 类型表达式. 一旦匹配成功, 不再查找其他匹配项.
第二优先级,^~ 类型表达式. 一旦匹配成功, 不再查找其他匹配项.
第三优先级,~/~* 类型表达式. 若有多个 location 的正则匹配, 使用匹配最长的那个.
第四优先级, 常规字符串类型, 按前缀匹配.
配置示例
location = / {...}
仅匹配来自 / 的请求.
- location / {
- ...
- }
匹配所有以 / 开头的请求.
若有更长的同类型表达式, 则选择更长的表达式.
若有正则表达式可以匹配, 则优先匹配正则表达式.
- location ^~ /images/ {
- ...
- }
匹配所有以 /images/ 开头的请求, 若匹配成功, 则停止匹配查找.
- location ~* \.(gif|jpg|jpeg)$ {
- ...
- }
匹配所有以 gif,jpg 和 jpeg 结尾的请求, 若匹配成功, 则停止匹配查找.
若有以 /images/ 开头的请求, 则会使用前一个配置.
来源: http://www.bubuko.com/infodetail-2582113.html