zoukankan      html  css  js  c++  java
  • Nginx 修饰符 Location 详解

    概述

    location 指令可以用在虚拟服务器 server 部分,并且意味着提供来自客户端的 URI 或者内部重定向访问。

    location 的定义如下:

    location [modifier] uri {...}
    或者是命名 location
    location @name {...}
    

    命名 location 仅对内部访问重定向,在进入一个 location 之前,它会保留请求的 URI 部分。命名 location 只能够在 server 级别定义。

    location 修饰符类型

    = 修饰符

    该修饰符使用精确匹配并且终止搜索。

    精确匹配 /test 路径。

    location = /test {
        echo "matching";
    }
    

    注:这里的 echo 需要安装 echo-nginx-module 模块。可以参考文章: https://www.cnblogs.com/yxhblogs/p/12901575.html

    测试一:完全匹配。

    ubuntu@VM-0-10-ubuntu:~/nginx$ curl http://localhost/test
    matching
    

    测试二:路径大写不匹配(如果操作的文件系统大小写不敏感,也会匹配)。

    ubuntu@VM-0-10-ubuntu:~/nginx$ curl http://localhost/TEST
    <html>
    <head><title>404 Not Found</title></head>
    <body bgcolor="white">
    <center><h1>404 Not Found</h1></center>
    <hr><center>nginx/1.9.9</center>
    </body>
    </html>
    

    测试三:忽略路径上的参数,会匹配。

    ubuntu@VM-0-10-ubuntu:~/nginx$ curl http://localhost/test?name=yxhsea
    matching
    

    测试四:带 / 结尾的,不会匹配。

    ubuntu@VM-0-10-ubuntu:~/nginx$ curl http://localhost/test/
    <html>
    <head><title>404 Not Found</title></head>
    <body bgcolor="white">
    <center><h1>404 Not Found</h1></center>
    <hr><center>nginx/1.9.9</center>
    </body>
    </html>
    

    测试五:路径不一致,不匹配。

    ubuntu@VM-0-10-ubuntu:~/nginx$ curl http://localhost/test1
    <html>
    <head><title>404 Not Found</title></head>
    <body bgcolor="white">
    <center><h1>404 Not Found</h1></center>
    <hr><center>nginx/1.9.9</center>
    </body>
    </html>
    

    ~ 修饰符

    该修饰符使用区分大小写的正则表达式匹配

    表示必须以 / 开始,以 $ 结束,中间是 test。

    location ~ ^/test$ {
        echo "matching";
    }
    

    测试一:匹配。

    ubuntu@VM-0-10-ubuntu:~/nginx$ curl http://localhost/test
    matching
    

    测试二:不匹配。

    ubuntu@VM-0-10-ubuntu:~/nginx$ curl http://localhost/TEST
    <html>
    <head><title>404 Not Found</title></head>
    <body bgcolor="white">
    <center><h1>404 Not Found</h1></center>
    <hr><center>nginx/1.9.9</center>
    </body>
    </html>
    

    测试三:忽略路径上的参数,会匹配。

    ubuntu@VM-0-10-ubuntu:~/nginx$ curl http://localhost/test?name=yxhsea
    matching
    

    测试四:不匹配。

    ubuntu@VM-0-10-ubuntu:~/nginx$ curl http://localhost/test/
    <html>
    <head><title>404 Not Found</title></head>
    <body bgcolor="white">
    <center><h1>404 Not Found</h1></center>
    <hr><center>nginx/1.9.9</center>
    </body>
    </html>
    

    测试五:不匹配。

    ubuntu@VM-0-10-ubuntu:~/nginx$ curl http://localhost/test1
    <html>
    <head><title>404 Not Found</title></head>
    <body bgcolor="white">
    <center><h1>404 Not Found</h1></center>
    <hr><center>nginx/1.9.9</center>
    </body>
    </html>
    

    ~* 修饰符

    该修饰符使用不区分大小写的正则表达式匹配

    不区分大小写 test 路径

    location ~* ^/test$ {
        echo "matching";
    }
    

    测试一:匹配。

    ubuntu@VM-0-10-ubuntu:~/nginx$ curl http://localhost/test
    matching
    

    测试二:匹配,大小写不敏感。

    ubuntu@VM-0-10-ubuntu:~/nginx$ curl http://localhost/TEST
    matching
    

    测试三:忽略路径上的参数,会匹配。

    ubuntu@VM-0-10-ubuntu:~/nginx$ curl http://localhost/test?name=yxhsea
    matching
    

    测试四:不匹配。

    ubuntu@VM-0-10-ubuntu:~/nginx$ curl http://localhost/test/
    <html>
    <head><title>404 Not Found</title></head>
    <body bgcolor="white">
    <center><h1>404 Not Found</h1></center>
    <hr><center>nginx/1.9.9</center>
    </body>
    </html>
    

    测试五:不匹配。

    ubuntu@VM-0-10-ubuntu:~/nginx$ curl http://localhost/test1
    <html>
    <head><title>404 Not Found</title></head>
    <body bgcolor="white">
    <center><h1>404 Not Found</h1></center>
    <hr><center>nginx/1.9.9</center>
    </body>
    </html>
    

    ^~ 修饰符

    如果该 location 是最佳的匹配,那么对于匹配这个 location 的字符串,该修饰符不再进行正则表达式检测。注意:这不是一个正则表达式匹配,它的目的是优先于正则表达式的匹配。

    location ^~ /test {
        echo "matching";
    }
    

    测试一:匹配。

    ubuntu@VM-0-10-ubuntu:~/nginx$ curl http://localhost/test
    matching
    

    测试二:不匹配。

    ubuntu@VM-0-10-ubuntu:~/nginx$ curl http://localhost/TEST
    <html>
    <head><title>404 Not Found</title></head>
    <body bgcolor="white">
    <center><h1>404 Not Found</h1></center>
    <hr><center>nginx/1.9.9</center>
    </body>
    </html>
    

    测试三:匹配。

    ubuntu@VM-0-10-ubuntu:~/nginx$ curl http://localhost/test?name=yxhsea
    matching
    

    测试四:匹配。

    ubuntu@VM-0-10-ubuntu:~/nginx$ curl http://localhost/test/
    matching
    

    测试五:匹配。

    ubuntu@VM-0-10-ubuntu:~/nginx$ curl http://localhost/test1
    matching
    
  • 相关阅读:
    Shortest Paths
    Minimum Spanning Trees
    Programming Assignment 1: WordNet
    Directed Graphs
    内连接
    数据中台文档--参考
    ORACLE触发器字段触发
    DTS
    oracle删除归档日志
    OGG 分区表
  • 原文地址:https://www.cnblogs.com/yxhblogs/p/12906046.html
Copyright © 2011-2022 走看看