访问nginx: 首先要匹配location中的uri 规则, 匹配上后, 然后再将root指定的根目录,拼接上location 上的路径, 再拼接上该目录下的文件, 
这才是最终访问的路径, 目前不知道为什么是这样做, 理解不了, 只能先记住
location [=|~|~*|^~|@] /uri/ { … }  分为两种location: 正则location 和 普通location
一: 正则location: “~ ”和“~* ”前缀表示正则location, “~ ”区分大小写,“~* ”不区分大小写;
二: 普通location: 其他前缀(包括:“=”,“^~ ”和“@ ”)和无任何前缀的都属于普通location 。

普通location 和 正则location 匹配规则是:先匹配普通location (再匹配正则表达式)
普通location 之间匹配规则 --> 最大前缀匹配
例如:location /prefix/mid/ {} 和 location /prefix/ {} , 对于HTTP 请求/prefix/mid/t.html ,(首先看是两个普通location比较,所以是最大前缀匹配规则;) 
前缀匹配的话两个location 都满足,选哪个?原则是:the most specific match ,于是选的是location /prefix/mid/ {} )。

“正则location ”与“正则location”内部的匹配规则是:
按照正则location 在配置文件中的物理顺序(编辑顺序)匹配的,并且只要匹配到一条正则location ,就不再考虑后面的

“普通location ”的最大前缀匹配结果与继续搜索的“正则location ”匹配结果的决策关系。
如果继续搜索的“正则location ”也有匹配上的,那么“正则location ”覆盖 “普通location ”的最大前缀匹配

通常的规则是,匹配完了“普通location ”指令,还需要继续匹配“正则location ”,但是你也可以告诉Nginx :
匹配到了“普通location ”后,不再需要继续匹配“正则location ”了,要做到这一点只要在“普通location ”前面加上“^~ ”符号(^ 表示“非”,~ 表示“正则”,字符意思是:不要继续匹配正则)。
“^~ ”和“= ”都能阻止继续搜索正则location 的话,区别: 
共同点是它们都能阻止继续搜索正则location ,不同点是“^~ ”依然遵守“最大前缀”匹配规则,然而“= ”不是“最大前缀”,而是必须是严格匹配(exact match )。

下面通过很多的例子讲解location

“location / {} ”和“location = / {} ”的区别
“location / {} ”: 是普通location , 遵循最大前缀匹配, 如果后面还有正则匹配, 如果正则匹配到了,正则匹配就会覆盖此配置; 
“location = / {} ”: 用的是"="号, 是精确匹配, 只能匹配到  http://host:port/ 请求;