nginx location配置
location在nginx中起着重要作用,对nginx接收到的请求字符串进行处理,如地址定向、数据缓存、应答控制、代理转发等
location语法
location [=|~|~*|^~] uri {
...
}
[]部分是匹配类型,可以没有,其中各项含义:
(1)= 精准匹配,请求字符串必须和uri完全相同时匹配成功
(2)~ 区分大小写的正则匹配
(3)~* 不区分大小写的正则匹配
(4)^~ 注意这个不是正则匹配,表示uri以普通字符串开头,
(5)空 表示uri以普通字符串开头,和上条意义相同,只是匹配顺序有区别
匹配类型
(1)普通匹配(没有[]部分,或者指定 ^~)
(2)精准匹配(=)
(3)正则匹配(~或者~*)
例如:
location = / {
#精确匹配 / ,主机名后面不能带任何字符串
...
}
location / {
#普通匹配,因为所有的地址都以 / 开头,所以这条规则将匹配到所有请求
...
}
location ~* \.(gif|jpg|jpeg)$ {
#正则匹配,此条规则匹配uri是否以 .gif 或 .jpg 或 .jpeg 结尾,不区分大小写
...
}
多个location的优先级
(1)找精准匹配,找到就停止继续匹配,执行此location
(2)验证各条普通匹配规则,是否有 ^~ 开头匹配成功的,有,停止继续匹配,执行此location,否,记下匹配度最高的那条
location语法
location [=|~|~*|^~] uri {
...
}
[]部分是匹配类型,可以没有,其中各项含义:
(1)= 精准匹配,请求字符串必须和uri完全相同时匹配成功
(2)~ 区分大小写的正则匹配
(3)~* 不区分大小写的正则匹配
(4)^~ 注意这个不是正则匹配,表示uri以普通字符串开头,
(5)空 表示uri以普通字符串开头,和上条意义相同,只是匹配顺序有区别
匹配类型
(1)普通匹配(没有[]部分,或者指定 ^~)
(2)精准匹配(=)
(3)正则匹配(~或者~*)
例如:
location = / {
#精确匹配 / ,主机名后面不能带任何字符串
...
}
location / {
#普通匹配,因为所有的地址都以 / 开头,所以这条规则将匹配到所有请求
...
}
location ~* \.(gif|jpg|jpeg)$ {
#正则匹配,此条规则匹配uri是否以 .gif 或 .jpg 或 .jpeg 结尾,不区分大小写
...
}
多个location的优先级
(1)找精准匹配,找到就停止继续匹配,执行此location
(2)验证各条普通匹配规则,是否有 ^~ 开头匹配成功的,有,停止继续匹配,执行此location,否,记下匹配度最高的那条
(3)按顺序验证各条正则匹配规则,有匹配的,停止继续匹配,执行此location,否则执行普通匹配规则中匹配度最高的那条