zoukankan      html  css  js  c++  java
  • Nginx 从入门到放弃(四)

    前面我们学习了nginx的基本操作和日志管理,今天我们学习一下生产环境经常会用到的路由定位location设置,在工作中,经常可能会出现怎么设置的路由访问不到网页呀?总是出现404错误啊,这些都很有可能是location的配置有误所导致的,所以学习location的配置也是学习nginx必不可少的一节。

    nginx的location路由定位匹配

    location是在server中匹配本地的目录,根据不同的url定位到不同的内容上。

     location [=|~|~*|^~] pattern {
         
     }
     # 中括号中不写任何参数表示一般匹配,也可以写参数
     # location = patt {} [精准匹配]
     # location patt {} [一般匹配]
     # location ~ patt {} [正则匹配]
    # location ~* {} [正则匹配忽略大小写]
    # location ^~ {} []

    如何发挥作用呢?

    首先查看是否有精准匹配,如果有,则停止匹配过程。

     location = patt {
        config A
     }

    如果 $uri == patt, 匹配成功,使用 configA

     location = / {
        root /var/www/html
        index index.htm
     }
     location / {
        root /data/html
        index index.html
     }

    上面配置如果访问http://xxx.com/

    定位流程是

    1. 精确匹配中 “/” , 得到 index 页为 index.htm

    2. 再次访问 /index.htm,此次内部转跳uri已经是“/index.htm”,所以只能匹配中一般匹配

    3. 在/data/html中查找文件,访问路径是/data/html/index.htm

    正则匹配

    如果一般匹配能够匹配上,nginx将继续查找是否有正则匹配能够匹配上,如果有就匹配正则匹配。正则匹配是比一般匹配优先的。

    总结:location的命中过程

    1. 先判断精准命中,如果命中,立即返回结果并结束匹配过程

    2. 判断普通命中,如果有多个命中,记录下来最长的命中结果,但并不结束

    3. 继续判断正则表达式的匹配结果,按配置里的正则表达式顺序为准,由上到下开始匹配,一旦匹配成功1个,立即返回结果,结束匹配过程。

    普通命中,顺序无所谓,是因为按命中的长短来确定的。

    正则命中,顺序有所谓,因为是从前往后命中的。

  • 相关阅读:
    初遇黑客
    第四周学习总结
    第三周学习总结
    关于base64编码的原理及如何在python中实现
    在python中如何将十进制小数转换成二进制
    《信息安全专业导论》第二周学习总结
    计算机科学概论速读问题
    刘谨铭的自我介绍
    师生关系
    20201318快速浏览教材提问
  • 原文地址:https://www.cnblogs.com/welisit/p/11025623.html
Copyright © 2011-2022 走看看