zoukankan      html  css  js  c++  java
  • location语法介绍

    location的详细使用


    在没有使⽤正则表达式的时候,nginx会先在server中的多个location选取匹配度最⾼的⼀个uri,uri是⽤⼾请求的字符串,即域名后⾯的web⽂件路径,然后使⽤该location模块中的正则url和字符串,如果匹配成功就结束搜索,并使⽤此location处理此请求。

    语法规则: location [=|~|~*|^~] /uri/ { … }
    =   #⽤于标准uri前,需要请求字串与uri精确匹配,如果匹配成功就停⽌向下匹配并⽴即处理请求。
    ~   #⽤于标准uri前,表⽰包含正则表达式并且区分⼤⼩写,并且匹配
    !~  #⽤于标准uri前,表⽰包含正则表达式并且区分⼤⼩写,并且不匹配
    ~*  #⽤于标准uri前,表⽰包含正则表达式并且不区分⼤写,并且匹配
    !~* #⽤于标准uri前,表⽰包含正则表达式并且不区分⼤⼩写,并且不匹配
    ^~  #⽤于标准uri前,表⽰包含正则表达式并且匹配以什么开头
    $   #⽤于标准uri前,表⽰包含正则表达式并且匹配以什么结尾
       #⽤于标准uri前,表⽰包含正则表达式并且转义字符。可以转. * ?等
    *   #⽤于标准uri前,表⽰包含正则表达式并且代表任意⻓度的任意字符
    

    1. 匹配案例-精确匹配:

    在server部分使⽤location配置⼀个web界⾯,要求:当访问nginx 服务器的/login的时候要显⽰指定html⽂件的内容:

    # 上传一张图片到PC的网页目录下
    [root@ubuntu ~]#rz -E
    rz waiting to receive.
    [root@ubuntu ~]#ll
    total 712
    drwx------  4 root root   4096 Jan  7 16:10 ./
    drwxr-xr-x 25 root root   4096 Jan  5 17:17 ../
    -rw-r--r--  1 root root 663409 Jan  7 16:08 0df37fc399e418555c7f002caf605594.jpg
    -rw-------  1 root root   5374 Jan  5 19:58 .bash_history
    -rw-r--r--  1 root root   3147 Jan  3 21:22 .bashrc
    drwx------  2 root root   4096 Jan  3 20:45 .cache/
    drwx------  3 root root   4096 Jan  3 20:45 .gnupg/
    -rw-r--r--  1 root root    148 Aug 17  2015 .profile
    -rw-------  1 root root  24921 Jan  7 16:10 .viminfo
    -rw-------  1 root root    156 Jan  7 15:56 .Xauthority
    [root@ubuntu ~]#mv 0df37fc399e418555c7f002caf605594.jpg /data/nginx/html/pc/1.jpg
    # 修改配置文件添加一个location的精确匹配
    [root@ubuntu ~]#vim /apps/nginx/conf/conf.d/pc.conf
    server {
            listen      80;
            server_name www.OpengSD.net;
            charset utf-8;
    
            location / {
                root /data/nginx/html/pc;
                index index.html index.htm;
           }
            location = /1.jpg {               # 在这里添加一个精确匹配的location
                root /data/nginx/html/pc;  
                index index.html;
           }
    }
    # 重启服务
    [root@ubuntu ~]#systemctl restart nginx.service 
    
    • 访问测试
      在这里插入图片描述

    2. 匹配案例-区分⼤⼩写:

    如果uri中包含⼤写字⺟,则此条件不匹配

    # 修改配置文件匹配正则表达式写法
    [root@ubuntu ~]#vim /apps/nginx/conf/conf.d/pc.conf
            location ~ /Am.jpg {
                    root /data/nginx/html/pc;
                    index index.html;
            }
    
    [root@ubuntu ~]#mv /data/nginx/html/pc/1.jpg /data/nginx/html/pc/Am.jpg  # 准备测试图片
    [root@ubuntu pc]#cp Am.jpg AM.jpg
    [root@ubuntu pc]#ll
    total 1308
    drwxr-xr-x 2 root root   4096 Jan  8 19:28 ./
    drwxr-xr-x 4 root root   4096 Jan  5 19:18 ../
    -rw-r--r-- 1 root root 663409 Jan  7 16:08 Am.jpg
    -rw-r--r-- 1 root root 663409 Jan  8 19:28 AM.jpg
    -rw-r--r-- 1 root root    176 Jan  5 18:51 index.html
    
    [root@ubuntu ~]#systemctl restart nginx.service   # 重启服务
    
    • 报错
      在这里插入图片描述
    • 精确Am才可以访问
      在这里插入图片描述

    3. 匹配案例-不区分⼤⼩写:

    对⽤⼾请求的uri做模糊匹配,也就是uri中⽆论都是⼤写、都是⼩写或者⼤⼩写混合,此模式也都会匹配,通常使⽤此模式匹配⽤⼾request中的静态资源并继续做下⼀步操作。

    [root@ubuntu ~]#vim /apps/nginx/conf/conf.d/pc.conf
                location ~* /Am.jpg {
                    root /data/nginx/html/pc;
                    index index.html;
            }
    [root@ubuntu pc]#ll  # 测试页面
    total 1308
    drwxr-xr-x 2 root root   4096 Jan  8 19:39 ./
    drwxr-xr-x 4 root root   4096 Jan  5 19:18 ../
    -rw-r--r-- 1 root root 663409 Jan  7 16:08 1.jpg
    -rw-r--r-- 1 root root 663409 Jan  8 19:38 am.jpg
    -rw-r--r-- 1 root root    176 Jan  5 18:51 index.html
    
    [root@ubuntu ~]#systemctl restart nginx.service
    访问测试:http://www.OpengSD.net/aM.jpg #直接访问资源名称即可
    --------------------------------------------------------
    精确匹配指定名称:
    # location ~ /am.jpg {
    # index index.html;
    # root /data/nginx/html/pc;
    # }
    location ~* /am.jpg {
        index index.html;
        root /data/nginx/html/pc;
    }
    重启Nginx并访问测试
    对于不区分⼤⼩写的location,则可以访问任意⼤⼩写结尾的图⽚⽂件,如区分⼤⼩写则只能访问am.jpg,不区分⼤
    ⼩写则可以访问am.jpg以外的资源⽐如Am.JPG、aM.jPG这样的混合名称⽂件,但是要求nginx服务器的资源⽬录有
    相应的⽂件,⽐如有Am.JPG有aM.jPG。
    
    • 不区分大小写访问测试
      在这里插入图片描述
      在这里插入图片描述
    • 精确匹配访问测试
      在这里插入图片描述

    4. 匹配案例-URI开始:

    [root@ubuntu dc]#vim /apps/nginx/conf/conf.d/pc.conf
            location ^~ /images {
                    root /data/nginx;   # 以这个目录为根(调用路径/data/nginx/images/index.html)
                    index index.html;
            }
            location /images1 {    # 这个目录可以没有,因为alias是重定向到下面这个文件夹里不访问images1。(调用路径/data/nginx/html/pc/index.html)
                    alias /data/nginx/html/pc;
                    index index.html;
            }
    [root@ubuntu ~]#/apps/nginx/sbin/nginx -t  # 检查语法
    nginx: the configuration file /apps/nginx/conf/nginx.conf syntax is ok
    nginx: configuration file /apps/nginx/conf/nginx.conf test is successful
    
    [root@ubuntu dc]#mkdir /data/nginx/images
    [root@ubuntu pc]#vim /data/nginx/images/index.html 
    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
            <title>taotaobao 博客</title>
            </head>
            <body>
            <h2>images</h2>
            </body>
            </html>
    [root@ubuntu pc]#vim /data/nginx/html/pc/index.html
    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
            <title>taotaobao 博客</title>
            </head>
            <body>
            <h2>淘淘宝博客PC网址</h2>
            </body>
            </html>
    
    • images测试访问
      在这里插入图片描述
    • images1测试访问
      在这里插入图片描述

    5. 匹配案例-文件名后缀:

    [root@ubuntu images1]#vim /apps/nginx/conf/conf.d/pc.conf
     location ~* .(gif|jpg|jpeg|bmp|png|tiff|tif|ico|wmf|js)$ {
                    root /data/nginx/images1;
                    index index.html;
            }
    
    [root@ubuntu ~]#mkdir /data/nginx/images1
    [root@ubuntu ~]#cd /data/nginx/images1
    [root@ubuntu images1]#rz -E
    rz waiting to receive.
    [root@ubuntu images1]#ll
    total 3916
    drwxr-xr-x 2 root root    4096 Jan  9 12:25 ./
    drwxr-xr-x 5 root root    4096 Jan  9 12:18 ../
    -rw-r--r-- 1 root root 4001776 Jan  9 12:25 抽象风景,树,房子,草地,风景图片_彼岸图网.jpg
    [root@ubuntu images1]#mv 抽象风景,树,房子,草地,风景图片_彼岸图网.jpg 1.jpg
    [root@ubuntu images1]#rz -E
    rz waiting to receive.
    [root@ubuntu images1]#ll
    total 10092
    drwxr-xr-x 2 root root    4096 Jan  9 12:53 ./
    drwxr-xr-x 5 root root    4096 Jan  9 12:18 ../
    -rw-r--r-- 1 root root 4001776 Jan  9 12:25 1.jpg
    -rw-r--r-- 1 root root 6322551 Jan  9 12:53 Devils_Bridge_桥梁和绿色树木_河流_倒映6k自然风景壁纸_彼岸图网.jpg
    [root@ubuntu images1]#mv Devils_Bridge_桥梁和绿色树木_河流_倒映6k自然风景壁纸_彼岸图网.jpg 1.png
    [root@ubuntu images1]#ll
    total 10092
    drwxr-xr-x 2 root root    4096 Jan  9 12:54 ./
    drwxr-xr-x 5 root root    4096 Jan  9 12:18 ../
    -rw-r--r-- 1 root root 4001776 Jan  9 12:25 1.jpg
    -rw-r--r-- 1 root root 6322551 Jan  9 12:53 1.png
    
    [root@ubuntu images1]#systemctl restart nginx.service 
    
    • 访问测试
      在这里插入图片描述
      在这里插入图片描述

    6. 匹配案例-优先级:

    [root@ubuntu ~]#vim /apps/nginx/conf/conf.d/pc.conf
     location ~* /1.jpg {
                    root /data/nginx/images;
                    index index.html;
            }
            location = /1.jpg {
                    root /data/nginx/html/pc;
                    index index.html;
            }
    
    # 注释掉精确匹配在测试一次查看images文件夹的图片
            #location = /1.jpg {
            #       root /data/nginx/html/pc;
            #       index index.html;
            #}
    
    匹配优先级:=, ^~, ~/~*,/
    location优先级:(location =) > (location 完整路径) > (location ^~ 路径) > (location ~,~* 正则顺序) > (location 部分起始路径) > (/)
    
    • 访问的是精确匹配对应的图片
      在这里插入图片描述
    • 注释测试
      在这里插入图片描述
      以此得出精确匹配的优先级高于模糊匹配

    7. 生产使用案例:

    直接匹配网站根会加速Nginx访问处理:
    location = / {
    ......;
    }
    location / {
    ......;
    }
    静态资源配置:
    location ^~ /static/ {
    ......;
    }
    # 或者
    location ~* .(gif|jpg|jpeg|png|css|js|ico)$ {
    ......;
    }
    多应用配置
    location ~* /app1 {
    ......;
    }
    location ~* /app2 {
    ......;
    }
    
        location的大致使用方式和我的理解就写到这了,对于前面的配置文件和目录都是在上一篇博客写的可以参考。
    

    上篇博客

  • 相关阅读:
    Java集合框架之Set接口浅析
    Java集合框架之Vector浅析
    Java集合框架之LinkedList浅析
    Java集合框架之ArrayList浅析
    Java集合框架之List接口浅析
    数据库设计==>>MySchool
    Windows程序==>>使用ListView控件展示数据
    Windows程序控件升级==>>构建布局良好的Windows程序
    窗体==>>初始Windows程序
    数据库的有关知识==>>我们的血泪史之经典练习(1-2)
  • 原文地址:https://www.cnblogs.com/www233ii/p/12171203.html
Copyright © 2011-2022 走看看