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

    一. location使用语法

    location [ = | ~ | ~* | ^~ ] URI {

    ...

    }

    说明:

    1. 其中URI可以是普通的字符串地址路径,或者是正则表达式,匹配成功后执行后面大括号里的相关指令

    2. URI前面的匹配标识说明

      = 开头表示精确匹配,
      /和^~ 开头表示常规字符串,
      正则表达式匹配可以使用 ~(区分大小写匹配)和 ~* (不区分大小写匹配),!~ 和 !~* 则表示不匹配
    
    总结
    1. 普通location会先于正则location进行匹配。
    2. 如果匹配到普通之后,想结束不再匹配正则的location,那么可以在普通的location前面加上 ^~这两个符号。
    3. 如果继续匹配正则location,正则匹配到的结果会覆盖普通匹配到的结果。
    4. 匹配正则的过程中,和正则的为上下位置有关系,因为正则location是匹配到一个随即停止匹配。并不存在普通location的最大前缀匹配原则。

    二. location匹配示例

    location = / {
            [ 配置1 ]
    }
    
    location / {
            [ 配置2 ]
    }
    
    location /documents/ {
            [ 配置3 ]
    }
    
    location ^~ /images/ {
            [ 配置4 ]
    }
    
    location ~* .(gif|jpg|jpeg)$ {
            [ 配置5 ]
    }

    不同URI对应的配置

    用户请求的URI 完整的URL地址 匹配的配置
    / http://www.etiantian.org/ 配置1
    /index.html http://www.etiantian.org/index.html 配置2
    /documents/document.html http://www.etiantian.org/documents/document.html 配置3
    /images/1.gif http://www.etiantian.org/images/1.gif 配置4
    /documents/1.jpg http://www.etiantian.org/documents/1.jpg 配置5

    三. location匹配实战

    验证不同的location标签生效的顺序,nginx配置文件如下

    server {
            listen    80;
            server_name    www.etiantian.org etiantian.org;
            root html/www;
    
            location / {
                return 401;
            }
          
            location= / {
                return 402;
            }
    
            location /documents/ {
                return 403;
            }
    
            location ^~ /images/ {  匹配任何以/images/开头的查询并停止搜索,任何正则表达式匹配不会做检查
    return
    404; } location ~* .(gif|jpg|jpeg)$ { return 500; } }

    检查语法并使修改的配置重启生效后测试网站请求

    1. 访问http://www.etiantian.org和http://www.etiantian.org/ ,返回402

    说明:URL为空或者/时,匹配了location = /   ,精确匹配的优先级最高,无论放置位置如何,都将优先被匹配并执行

    2. 访问http://www.etiantian.org/index.html,  http://www.etiantian.org/abc/, 都返回401

    说明:/ 为默认匹配,如果没有匹配上其他location,最后会匹配默认匹配的部分,所以/abc没匹配上也会返回401

    3. 访问http://www.etiantian.org/documents/document.html,会返回403

    说明:此部分为路径匹配,匹配了路径/documents/

    4. 访问http://www.etiantian.org/documents/1.jpg,返回500

    说明:虽然会先匹配普通路径/documents,但是后面又匹配了正则,从而覆盖了前面的普通匹配

    5. 访问http://www.etiantian.org/images/1.gif, 返回404

    说明:首先匹配了普通路径/images, 因为/images前面有"^~"  ,所有即使1.gif匹配了正则匹配,但是也不会做检查

    高级点的用法可参考:https://www.linuxidc.com/Linux/2015-03/114982.htm

  • 相关阅读:
    centos7 主从dns配置 bind服务
    Linux的启动流程
    shell脚本编程数组
    shell脚本编程进阶
    计划任务
    进程管理
    Linux网络配置
    计算机网络基础
    磁盘存储和文件系统
    软件包管理
  • 原文地址:https://www.cnblogs.com/regit/p/9298533.html
Copyright © 2011-2022 走看看