zoukankan      html  css  js  c++  java
  • NGINX学习笔记(location)

    location语法规则:

    location [ = | ~ | ~* | ^~ ] uri { ... }
    location @name { ... }

    语法规则很简单,一个location关键字,后面跟着可选的修饰符,后面是要匹配的字符,花括号中是要执行的操作

    修饰符:

    = 表示精确匹配。只有请求的url路径与后面的字符串完全相等时,才会命中。
    ~ 表示该规则是使用正则定义的,区分大小写。
    ~* 表示该规则是使用正则定义的,不区分大小写。
    ^~ 表示如果该符号后面的字符是最佳匹配,采用该规则,不再进行后续的查找。

    匹配过程:

    对请求的url序列化。例如,对%xx等字符进行解码,去除url中多个相连的/,解析url中的...等。这一步是匹配的前置工作。

    location有两种表示形式,一种是使用前缀字符,一种是使用正则。如果是正则的话,前面有~~*修饰符。

    具体的匹配过程如下:

    首先先检查使用前缀字符定义的location,选择最长匹配的项并记录下来。

    如果找到了精确匹配的location,也就是使用了=修饰符的location,结束查找,使用它的配置。

    然后按顺序查找使用正则定义的location,如果匹配则停止查找,使用它定义的配置。

    如果没有匹配的正则location,则使用前面记录的最长匹配前缀字符location。

    基于以上的匹配过程,我们可以得到以下两点启示:

    使用正则定义的location在配置文件中出现的顺序很重要。因为找到第一个匹配的正则后,查找就停止了,后面定义的正则就是再匹配也没有机会了。
    使用精确匹配可以提高查找的速度。例如经常请求/的话,可以使用=来定义location。
  • 相关阅读:
    网络并发服务器设计
    linux脚本编程技术
    守护进程学习
    UDP通讯程序设计
    TCP通讯程序设计
    linux中socket的理解
    linux网络协议
    kafka ProducerConfig 配置
    crontab定时执行datax
    crontab
  • 原文地址:https://www.cnblogs.com/GHzcx/p/11140669.html
Copyright © 2011-2022 走看看