location是属于http块下的server块下的匹配块 常用于匹配网站发布内容
location会根据不同的URI使用不同的配置,来处理不同的请求。
location是有顺序的,会被第一个匹配的location处理。
location / #匹配任何以/开始的查询,但是正则表达式与一些较长的字符会被首先匹配
location的前缀及含义:
= 表示精确匹配,优先级也是最高的
^~ 表示uri以某个常规字符串开头,理解为匹配url路径即可
~ 表示区分大小写的正则匹配
~ 表示不区分大小写的正则匹配
!~ 表示区分大小写不匹配的正则
!~ 表示不区分大小写不匹配的正则
/ 通用匹配,任何请求都会匹配到
@ 内部服务跳转
以上匹配符从上往下依次排列优先级(从高到低)
以上分布大致为
= > ^~ > ~ > ~ > !~ > !~ > /
当有多个location都能匹配该请求的时候才会使用到优先级
如果提交的url只有一个location那么该location的参数会去匹配请求。
例:
location ~ .(jpg|css)$ {
root location; //要在location目录下有一个以.jpg结尾的文件
}
location ~* .(JPG|css)$ {
root location; //要在location目录下有一个以.jpg结尾的文件
}
