• Nginx Location 及静动分离案例


    一、Nginx正则及location匹配
    1、Nginx 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 ]

    }

    5、匹配顺序优先级:

    (location = )> (location 完整路径)>(location ^~路径)>(location ~,~*正则顺序)>(location 部分起始路径)>(/)

    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

  • 相关阅读:
    etcd 部署、备份与恢复
    centos7 mysql 5.7.24 源码编译
    生产中两块网卡bond
    shell 免密批量执行脚本
    MegaCli 清除与添加raid5
    centos7 mongodb4.0.2 复制集主从部署
    centos6.6 部署 cacti 并采集交换机流量
    shell 批量远程主机执行命令
    拯救系统文件只读模式
    下推自动机(PDA)在程序设计中的应用
  • 原文地址:https://www.cnblogs.com/990624lty-jhc/p/11554897.html
Copyright © 2020-2023  润新知