zoukankan      html  css  js  c++  java
  • nginx之location

    1locations简介

    location的主要作用就是根据用户请求的uri来执行不同的应用。

    2location的语法

    location [=|~|~*|^~|@] uri{...........}   官方地址:http://nginx.org/en/docs/http/ngx_http_core_module.html#location

    location [=|~|~*|^~|@] uri {}
    指令 匹配标识 匹配的普通字符串地址,或者正则表达式 匹配成功后要执行的配置段


    -2.1正则location (location using regular expressions)

    “~ ”和“~* ”前缀表示正则location ,

    “~ ”区分大小写,“~* ”不区分大小写;

    2.2普通location(location using literal strings)

    其他前缀(包括:“=”,“^~ ”和“@ ”)和无任何前缀的都属于普通location ,不做正则表达式的检查

    3匹配规则

    这里先交代匹配规则:

    匹配 规则是:

    引用别人的一句:“正则 location 匹配让步普通location 的严格精确匹配结果;但覆盖普通 location 的最大前缀匹配结果”。

    先匹配普通location ,再匹配正则表达式

    在普通location内部(假设没有正则,那么按照最大前缀来匹配))

    正则location:正则location 按照 在配置文件中的物理顺序来匹配,与顺序有关。

    说明一点:对于匹配普通location——》匹配完了“普通location ”(按照最大前缀匹配来匹配)指令,还需要继续匹配“正则location ”,如果匹配到正则location那么正则location ”覆盖 “普通location ”的最大前缀匹配,最终匹配到正则location。

    匹配完了“普通location ”指令,我们不需要继续匹配“正则location ”,我们可以通过nginx.conf来做到。

    1在“普通location ”前面加上“^~ ”符号(^ 表示“非”,~ 表示“正则”,字符意思是:不要继续匹配正则)。

    2在“普通location ”前面加上“=”符号

    3当“最大前缀”匹配恰好就是一个“严格精确(exact match )”匹配,照样会停止后面的搜索

    简单解释下上边两个的区别:

    共同点是它们都能阻止继续搜索正则location ,

    不同点是“^~ ”依然遵守“最大前缀”匹配规则,然而“= ”不是“最大前缀”,而是必须是严格匹配(exact match )。

     参考:http://www.cnblogs.com/lidabo/p/4169396.html(超级详细)

  • 相关阅读:
    基于php缓存的详解
    Nginx 的 Location 配置指令块
    Nginx负载均衡与反向代理的配置实例
    Linux下mysql定时备份及恢复
    KVO的底层实现
    小谈KVC中KeyPath的集合运算符
    iOS开发中常用的单例
    内存中的5大区域
    需要记住的几个ASCII码
    结构体-内存对齐
  • 原文地址:https://www.cnblogs.com/Dicky-Zhang/p/5962217.html
Copyright © 2011-2022 走看看