zoukankan      html  css  js  c++  java
  • Nginx正则及location匹配

    1、Nginx location规则匹配

    ^~    标识符匹配后面跟-一个字符串。匹配字符串后将停止对后续的正则表达式进行匹配,如location ^~ /images/ , 在匹配了/images/这个字符串后就停止对后续的正则匹配

    =   精准匹配,如location=/,只会匹配url为/的请求。
    ~   区分大小写的匹配。
    ~*    不区分大小写的匹配。
    !~     对区分大小写的匹配取非。
    !~*    对不区分大小写的匹配取非。
    /     通用匹配,如果没有其它匹配,任何请求都会被匹配到
     匹配顺序优先级:
     
    (location =)> (location 完整路径)> (location ^~ 路径) > (location ~,~*正则顺序) >(location 部分起始位置) > (/)
     2、正则表达式
    *:重复前面的字符0次或多次
    ?:重复前面的字符0次或1次
    +:重复前面的字符1次或多次
    .:匹配除换行符以外的任意一个字符
    (a|b):匹配a或b
    ^:以...开头
    $:以...结尾
    {n}:重复前面的字符n次
    {n,}:重复前面的字符n次或更多次
    {n,m}:重复前面的字符n-m次
    *?:重复前面的字符0次或多次,但尽可能少重复
    +?:重复前面的字符1次或多次,但尽可能少重复
    ??:重复前面的字符0次或1次,但尽可能少重复
    {n,m}?:重复前面的字符n-m次,但尽可能少重复
    {n}?:重复前面的字符n次以上,但尽可能少重复
    3、正则表达式补充
    W:匹配任意不是字母,数字,下划线,汉字的字符(特殊符号)
    S:匹配任意不是空白符的字符
    D:匹配任意非数字的字符
    B:匹配任意不是单词开头或结尾的位置
    [a]:匹配单个字符a
    [a-z]:匹配a-z小写字符的任意一个
    [^a]:匹配除了a以外的任意字符
    [^abc]:匹配除了abc这几个字母以外的任意字符
    4、Nginx location应用规则
    先写一个location,后面匹配挑任意一个,加url的地址(网页路径)花括号里写最终要处理的动作
    location [=|~|~*|^~|!~|!~*] /url/{...}
    默认值:no
    使用字段:server
    location参数根据URL的不同需求来进行匹配,可以使用字符串与正则表达式匹配
    例:location ~* .*.jsp$ {
      proxy_pass http://tomcat_server;
    }
    (1)
    http://www.a.com/
    location = / {
    #精准匹配 / ,主机名后面不能带任何的字符串
    [configuration A ]
    }
    (2)
    location / {
    #因为所有的地址都以 / 开头,所以这条规则将匹配到所有的请求
    #但是正则和最长字符串会优先匹配
    [configuration B ]
    }
    (3)
    location / documents/ {
    #匹配任意以documents开头的地址,匹配符合以后,还要继续往下搜索
    #只有后面的正则表达式没有匹配到时,才会采用这一条
    [configuration C ]
    }
    (4)
    location ~  / documents/Abc {
    #匹配任意以documents开头的地址,匹配符合以后,还要继续往下搜索
    #只有后面的正则表达式没有匹配到时,才会采用这一条
    [configuration CC ]
    }
    (5)
    location ^~ /images/ {
    #匹配任意以images开头的地址,匹配符合以后,还要继续往下搜索
    [configuration D ]
    }
    (6)
    location ~*.(gif|jpg|jpeg) {
    #匹配所有以gif,jpg或jpeg结尾的请求
    #然而,所有的请求/images/ 下的图片会被config D 处理,因为 ^ ~ 到达不了这一条正则
    [configuration E ]
    }
    (7)
    location  /images/ {
    #字符匹配到 /images/,继续往下,会发现 ^~ 存在
    [configuration F ]
    }
    (8)
    location /images/abc {
    #最长字符串匹配到 /images/abc,继续往下,会发现 ^~ 存在
    [configuration G ]
    }
    6、实验(需要两台虚拟机)
    第一台虚拟机确保安装nginx
    第二台虚拟机上安装确保搭建好LAMP
    (1)在第二台虚拟机上:[root@localhost ~]# rpm -q nfs-utils rpcbind      //查看有没有安装nfs-utils rpcbind这两个软件包
    [root@localhost ~]# mkdir /wwwroot         //创建一个文件
    [root@localhost ~]# vim /etc/exports      //添加以下内容
    /wwwroot 192.168.200.112  (ro) 
    [root@localhost ~]# systemctl restart rpcbind
    [root@localhost ~]# systemctl restart nfs
    (2)[root@localhost ~]# cd /wwwroot/           //在里面添加一张图片
    rz
    (3)在第一台虚拟机上:
    [root@localhost ~]# cd /usr/local/nginx/html/images/          //查看一下里面有在第二台虚拟机上添加的图片
    [root@localhost html]# vim index.html          //添加以下内容(把图片加进去)
    <img src="images/wyb.jpg" />
    (4)在网页上访问:192.168.200.112
  • 相关阅读:
    基于WebForm+EasyUI的业务管理系统形成之旅 -- 构建Web界面(Ⅴ)
    基于WebForm+EasyUI的业务管理系统形成之旅 -- 数据统计(Ⅳ)
    基于WebForm+EasyUI的业务管理系统形成之旅 -- 首页快捷方式(Ⅲ)
    基于WebForm+EasyUI的业务管理系统形成之旅 -- 登录窗口(Ⅱ)
    基于WebForm+EasyUI的业务管理系统形成之旅 -- 系统设置(Ⅰ)
    基于WebForm+EasyUI的业务管理系统形成之旅 -- 总体介绍
    LeetCode-Implement Queue using Stacks
    LeetCode-Implement Stack Using Queues
    LeetCode-Count Primes
    LeetCode-Reverse Bits
  • 原文地址:https://www.cnblogs.com/990114-jhc/p/11669954.html
Copyright © 2011-2022 走看看