03_nginx之location

2017-10-11  本文已影响0人  对方不想理你并向你抛出一个异常

location

location 有”定位”的意思,,根据Uri来进行不同的定位,在虚拟主机的配置中,是必不可少的。
location可以把网站的不同部分,定位到不同的处理方式上。比如, 碰到.php, 如何调用PHP解释器? --这时就需要location

location [=|~|~*|^~] patt {
}

中括号可以不写任何参数,此时称为一般匹配

也可以写参数,因此,大类型可以分为3种:

location = patt {} [精准匹配]
location patt{} [一般匹配]
location ~ patt{} [正则匹配]

精准匹配

location = patt {
    config A
}

如果 $uri == patt,匹配成功,使用config A

        location =/ {
            root www;
            index index.htm index.htm;
        }

        location / {
            root   html;
            index  index.html index.htm;
        }

上面都是相对路径,绝对路径为usr/local/nginx/www/usr/local/nginx/html
如果访问:http://z.com/

        location =/index.htm {
            root www;
            index index.htm index.htm;
        }

        location /index.htm {
            root   html;
            index  index.html index.htm;
        }
        location =/index.htm {
            root www;
            index index.htm index.htm;
        }

        location =/ {
            root    www;
            index   index.html index.htm;
        }

        location /index.htm {
            root   html;
            index  index.html index.htm;
        }
        location =/index.html {
            root www;
            index index.htm index.htm;
        }

        location =/ {
            root    www;
            index   index.html index.htm;
        }

        location /index.htm {
            root   html;
            index  index.html index.htm;
        }

正则表达式

        location / {
            root   html;
            index  index.html index.htm;
        }

        location ~ image {
            root    www;
            index   index.html index.htm;
        }

如果我们访问 http://z.com/image/logo.png
此时, //image/logo.png 匹配,同时,image正则 与image/logo.png也能匹配,谁发挥作用?
正则表达式的成果将会使用,图片真正会访问 /usr/local/www/image/logo.png

        location / {
            root   html;
            index  index.html index.htm;
        }

        location /foo {
            root    www;
            index   index.html index.htm;
        }

我们访问 http://z.com/foo
对于uri /foo, 两个location的patt,都能匹配他们,即 /能从左前缀匹配 /foo, /foo也能左前缀匹配/foo,
此时, 真正访问 /usr/local/www/index.html,原因:/foo匹配的更长,因此使用之;

总结

location解析过程
上一篇 下一篇

猜你喜欢

热点阅读