nginx.conf文件参数详解(二)——location块(重点)

1.location

 

参考:http://tengine.taobao.org/nginx_docs/cn/docs/http/ngx_http_core_module.html

语法

location [ = | ~ | ~* | ^~ ] uri { ... }

location @name { ... }

默认值

-

上下文

server, location

1.1 举一个“栗子”:

让我们用一个例子解释上面的说法:

location = / {

    [ configuration A ]

}



location / {

    [ configuration B ]

}



location /documents/ {

    [ configuration C ]

}



location ^~ /images/ {

    [ configuration D ]

}



location ~* \.(gif|jpg|jpeg)$ {

    [ configuration E ]

}

请求“/”匹配配置A,

请求“/index.html”匹配配置B,

请求“/documents/document.html”匹配配置C,

请求“/images/1.gif”匹配配置D,

请求“/documents/1.jpg”匹配配置E。

1.2 location 映射(ngx_http_core_module)     

        location [ = | ~ | ~* | ^~ ] uri { ... }     

        location URI {}:         对当前路径及子路径下的所有对象都生效;     

        location = URI {}: 注意URL最好为具体路径。 精确匹配指定的路径,不包括子路径,因此,只对当前资源生效;     

        location ~ URI {}:     

        location ~* URI {}:         模式匹配URI,此处的URI可使用正则表达式,~区分字符大小写,~*不区分字符大小写;     

        location ^~ URI {}:         不使用正则表达式     优先级:= > ^~ > ~|~* >  /|/dir/ 

2.location配置规则

  •         =前缀的指令严格匹配这个查询。如果找到,停止搜索。
  •         所有剩下的常规字符串,最长的匹配。如果这个匹配使用^〜前缀,搜索停止。
  •         正则表达式,在配置文件中定义的顺序。
  •          如果第3条规则产生匹配的话,结果被使用。否则,如同从第2条规则被使用
  •         location 的执行逻辑跟 location 的编辑顺序无关。

        矫正:这句话(下划线+斜体)不全对,“普通 location ”的匹配规则是“最大前缀”,因此“普通 location ”的确与 location 编辑顺序无关;

        但是“正则 location ”的匹配规则是“顺序匹配,且只要匹配到第一个就停止后面的匹配”;

        “普通location ”与“正则 location ”之间的匹配顺序是?先匹配普通 location ,再“考虑”匹配正则 location 。

        注意这里的“考虑”是“可能”的意思,也就是说匹配完“普通 location ”后,有的时候需要继续匹配“正则 location ”,有的时候则不需要继续匹配“正则 location ”。两种情况下,不需要继续匹配正则 location :

        ( 1 )当普通 location 前面指定了“ ^~ ”,特别告诉 Nginx 本条普通 location 一旦匹配上,则不需要继续正则匹配;

        ( 2 )当普通location 恰好严格匹配上,不是最大前缀匹配,则不再继续匹配正则 

3.请求

nginx  收到请求头:判定ip,port,hosts决定server

请求头:

  • host:决策server负责处理
  • uri:决策location
  • 反向代理:proxy_pass  ip:port[uri];

       

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ErYao7

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值