• Nginx location 精准匹配URL = /xxx


    Location是什么?


    Location是Nginx中的块级指令(block directive),通过配置Location指令块,可以决定客户端发过来的请求URI如何处理(是映射到本地文件还是转发出去)及被哪个location处理。

    匹配模式

    分为两种模式:

    • 绝对匹配:调用的请求Path固定为创建时填写的API请求Path。
    • 前缀匹配:调用的请求Path将以创建时填写的API请求Path为前缀,支持接口定义多个不同Path。

      例如,请求路径为/test/AA,使用前缀匹配时,通过/test/AA/CC可以访问,但是通过/test/AACC无法访问。

    说明:

    使用前缀匹配时,匹配剩余的路径将透传到后端。

    例如,使用前缀匹配,前端请求路径定义为/test/,后端请求路径定义为/test2/,通过/test/AA/CC访问API,则后端收到的请求url为/test2/AA/CC。

    之前介绍的是location的root和index,root设置的是你所服务的根目录,而index是设置当前目录的首页。

    默认首页就是在你输入完url之后,不再输入具体页面的时候默认显示。

    上面这种方式的配置会发生冲突。可以如下写法,写上=号。当写上=号之后,=号之后接上路径,那么这个路径就一定要在用户访问的时候将其写全。

    1. location / {
    2. root html;
    3. index index.html;
    4. }
    5. location =/dist {
    6. root /usr/local/nginx/html;
    7. index index.html index.htm;
    8. }

     精确匹配


    1. location = /index.html {
    2. […]
    3. }
    4. 默认是/,即所有的资源都跑到/下面去找,这样速度比较慢,可以直接定位location=/index.html
    5. location = /abcd {
    6.  […]    
    7. }
    8. http://website.com/abcd匹配,其他的如http://website.com/abcd/,http://website.com/abcde都是不匹配的会返回404
    • 如果有子文件夹 =/xxx,那么文件夹就是xxx,文件夹建立之后就可以在该文件夹下面进行相应的访问。
    • 如果不建立子文件夹,那么想要在=号之后写上具体的页面。

    在写完前面的IP地址之后,如果后面接的是index.html,那么就是访问是/usr/local/nginx/html/dist这个目录下面的index指令下的index.html

    1. location =/index.html {
    2. root /usr/local/nginx/html/dist;
    3. index index.html index.htm;
    4. }

    表示带了斜杠之后,后面是什么无所谓,只要后面不接/index.html就行,如果接了,那么访问的就是下面的。

    1. location / {
    2. root html;
    3. index index.html;
    4. }

    可以看到后面接上index.htm访问的是dist目录下面的index.html   匹配到 location =/index.html

    如果访问的是test.html那么匹配的是location /

    通过上面可以看出 / 和=/xxx是两个完全不同的含义,当写=号表示这个url能够完全匹配就进入location里面。如果不能完全匹配就去找有没有类似location后面接/的。

    同时两个location的根本区别在于root的访问路径是不一样的。一个服务的路径是html,一个是/usr/local/nginx/html。

    location = /xxxxx 表示只有在访问的时候写成完全和location后面url完全匹配才会进入到相应的配置里面,否则找个泛泛可以匹配的location。

    不写=的location属于泛泛的,location /表示只要在当前的IP地址后面加个斜杠/,后面无论写什么,只要别写和精确匹配路径吻合的,那么就能够匹配到。

    精确匹配匹配上了就到location块里面来,否则就是再往下模糊匹配等等。。。。。。 

  • 相关阅读:
    (02)Cartographer源码无死角解析-(21) MapBuilder→AddTrajectoryBuilder()
    python将中文标点符号转换成英文标点符号然后再替换成回车符实现换行
    antdesignvue数字输入框限制只能输入整数
    Kafka 厉害的几点!
    【附源码】Python计算机毕业设计食堂在线点餐系统小程序
    老牌期货公司综合实力强开户体验佳
    未支付订单的过期删除策略
    Nginx监控与告警:确保服务稳定运行
    深度学习修炼(二)全连接神经网络 | Softmax,交叉熵损失函数 优化AdaGrad,RMSProp等 对抗过拟合 全攻略
    娄底锂电池隔膜研发实验室建设资料科普
  • 原文地址:https://blog.csdn.net/qq_34556414/article/details/133169033