• nginx路径匹配规则及配置nginx静态文件或者视频文件的本地播放等


    一.nginx路径匹配符号

    = 表示精确匹配
    ^~ 表示uri以某个常规字符串开头,大多情况下用来匹配url路径,nginx不对url做编码,因此请求为/static/20%/aa,可以被规则^~ /static/ /aa匹配到(注意是空格)。
    ~ 正则匹配(区分大小写)
    ~* 正则匹配(不区分大小写)
    !~ 区分大小写不匹配
    !~* 不区分大小写不匹配
    / 任何请求都会匹配

    二.nginx符号优先级

    首先匹配 =,其次匹配^~, 其次是按文件中顺序的正则匹配,最后是交给 / 通用匹配。当有匹配成功时候,停止匹配,按当前匹配规则处理请求。(精准匹配>模糊匹配>通用匹配

    三.demo示例

    location  = / {
      # 精确匹配 / ,主机名后面不能带任何字符串
      [ 规则 A ] 
    }
    
    location  / {
      # 因为所有的地址都以 / 开头,所以这条规则将匹配到所有请求
      # 但是正则和最长字符串会优先匹配
      [ 规则 B ] 
    }
    
    location /documents/ {
      # 匹配任何以 /documents/ 开头的地址,匹配符合以后,还要继续往下搜索
      # 只有后面的正则表达式没有匹配到时,这一条才会采用这一条
      [ 规则 C ] 
    }
    
    location ~ /documents/Abc {
      # 匹配任何以 /documents/ 开头的地址,匹配符合以后,还要继续往下搜索
      # 只有后面的正则表达式没有匹配到时,这一条才会采用这一条
      [ 规则 D ] 
    }
    
    location ^~ /images/ {
      # 匹配任何以 /images/ 开头的地址,匹配符合以后,停止往下搜索正则,采用这一条。
      [ 规则 E ] 
    }
    
    location ~* \.(gif|jpg|jpeg)$ {
      # 匹配所有以 gif,jpg或jpeg 结尾的请求
      # 然而,所有请求 /images/ 下的图片会被 [规则 E] 处理,因为 ^~ 优先级更高
      [ 规则 F ] 
    }
    
    location /images/ {
      # 字符匹配到 /images/,继续往下,会发现 ^~ 存在
      [ 规则 G ] 
    }
    
    location /images/abc {
      # 最长字符匹配到 /images/abc,继续往下,会发现 ^~ 存在
      [ 规则 H ] 
    }
    
    location ~ /images/abc/ {
      # 只有去掉 [规则 E] 才有效:先最长匹配 [规则 H] 开头的地址,继续往下搜索,匹配到这一条正则,采用
      [ 规则 I ] 
    }

    四.其他实际应用示例

    1.微信授权文件通用匹配规则(匹配MP_verify_****.txt文件,中间任意字符,并在/usr/share/nginx/file目录中寻找对应文件)

    # 微信授权文件通用匹配规则
    location ~(MP_verify_)*\.(txt)$ {
        root   /usr/share/nginx/file;
    }

    2.匹配/static开头路径,并在/data/product/static寻找对应文件

    # 静态文件工程配置
    location ^~ /static/ {
        root   /data/product/static;
        index  index.html index.htm;
    }

    3.静态文件匹配

    # 静态文件配置
    location ~* \.(html|htm|gif|jpg|jpeg|bmp|png|ico|txt|js|css)$ {  
        root /data/product/static/;  
    }

    4.mp4视频播放匹配

     location ~* \.mp4$ {  #这里配置视频
        root D:\sp\djz; #这里是你的视频的存放目录
     }

    5.proxy_pass进行服务器的项目的代理

    location /stwx {
       proxy_pass http://stwx;
       include    proxy.conf;
    }
  • 相关阅读:
    筛选!所需的物品!
    对表格内容进行筛选!
    切换功能更新的事件如下:
    Entity Framework 6 Recipes 2nd Edition(12-3)译 -> 数据库连接日志
    Entity Framework 6 Recipes 2nd Edition(12-1)译 -> 当SaveChanges( ) 被调用时执行你的代码
    Entity Framework 6 Recipes 2nd Edition(11-12)译 -> 定义内置函数
    Entity Framework 6 Recipes 2nd Edition(11-11)译 -> 在LINQ中调用数据库函数
    Entity Framework 6 Recipes 2nd Edition(11-9)译 -> 在LINQ中使用规范函数
    Entity Framework 6 Recipes 2nd Edition(11-6)译 -> 从一个”模型定义”函数里返回一个复杂类型
    Entity Framework 6 Recipes 2nd Edition(11-5)译 -> 从”模型定义”函数返回一个匿名类型
  • 原文地址:https://www.cnblogs.com/tongcc/p/15809291.html
Copyright © 2020-2023  润新知