一、语法结构
location [ = | ~ | ~* | ^~ ] /uri/ { configuration }
二、匹配模式
1、普通字符串
=
^~
/uri
/
2、正则表达式
~
~*
三、匹配优选级
=
^~
~、~*
/、/uri
四、运算符
1、精确前缀匹配
//写法
location = /
//匹配
192.168.2.1
192.168.2.1/
2、普通字符串匹配
//写法
location ^~ /home
//匹配
192.168.2.1/home
192.168.2.1/home/
192.168.2.1/home?id=10
192.168.2.1/home/index.php
3、区分大小写的正则匹配
//写法
location ~ /home
//匹配
192.168.2.1/home
192.168.2.1/home/
192.168.2.1/home?id=10
192.168.2.1/home/index.php
4、忽略大小写的正则匹配
//写法
location ~* /home
//匹配
192.168.2.1/HOME
192.168.2.1/home
192.168.2.1/home/
192.168.2.1/home?id=10
192.168.2.1/home/index.php
192.168.2.1/Home/index.php
5、不带任何修饰符,表示前缀匹配
//写法
location /home
//匹配
192.168.2.1/home
192.168.2.1/home/
192.168.2.1/home?id=10
192.168.2.1/home/index.php
6、通用匹配,任何未匹配到其他location的请求都会匹配到
//写法
location /
//匹配
192.168.2.1
192.168.2.1/
五、举例
location = / {
# 只匹配 / 的查询.
[ configuration A ]
}
location ^~ /images/ {
# 匹配任何以 /images/ 开始的查询并且停止搜索,不检查正则表达式。
[ configuration B ]
}
location ~* \.(gif|jpg|jpeg)$ {
# 匹配任何以gif, jpg, or jpeg结尾的文件,但是所有 /images/ 目录的请求将在Configuration C中处理。
[ configuration C ]
}
location / {
# 匹配任何以 / 开始的查询,但是正则表达式与一些较长的字符串将被首先匹配。
[ configuration D ]
}