nginx学习第六天

ngx_hash_wildCard_t

    只能包含通配符再前的key或者通配符在后的key。不能同时保函两种类型的通配符

    构建一个包含通配符key的hash表

        hint构造一个通配符hash表的一些参数的一个集合。关于参数对应的类型说明,请参见ngx_hash_t类型中ngx_hash_init函数的说明。

    names构造此hash表的所有通配符key的数组。特别要注意的是这里的key已经都是被预处理过的。 例如:“*.abc.com”或者“.abc.com”被预处理完成以后,变成了“com.abc.”。

而“mail.xxx.*”则被预处理为“mail.xxx.”。为什么会被处理这样?这里不得不简单地描述

一下通配符 hash 表的实现原理。当构造此类型的 hash 表的时候,实际上是构造了一个 hash

表的一个“链表”,是通过 hash 表中的 key“链接”起来的。比如:对于“*.abc.com”将会

构造出 2 个 hash 表,第一个 hash 表中有一个 key 为 com 的表项,该表项的 value 包含有

指向第二个 hash 表的指针,而第二个 hash 表中有一个表项 abc,该表项的 value 包含有指

向 *.abc.com对应的 value 的指针。那么查询的时候,比如查询www.abc.com的时候,先

查 com,通过查 com 可以找到第二级的 hash 表,在第二级 hash 表中,再查找 abc,依次

类推,直到在某一级的 hash 表中查到的表项对应的 value 对应一个真正的值而非一个指向下

一级 hash 表的指针的时候,查询过程结束。 ** 这里有一点需要特别注意的,就是 names 数

组中元素的 value 所对应的值(也就是真正的 value 所在的地址)必须是能被 4 整除的,或者

nelts name 数组元素的个数

        该函数执行成功返回NGX_OK,否则NGX_ERROR.

        该函数查询包含通配符在前的key的hash表

hwc hash 表对象的指针

 name 需要查询的域名

 len name 的长度

ngx_hash_combined_t

    组合类型hash表,该表的定义如下:

        该类型实际上包含了三个hash表,一个向前通配符的hash表和一个包含向后通配符的hash表


nginx提供该类型的作用,提供一个方便的容器包含三个类型的hash表,包含通配符的和不包含通配符的key构建hash表以后,以一种方便的方式来查询,不需要考虑一个key到底是那个雷松的hash表里去查

如果查询到多个匹配只返回第一个

hash此组合hash表对象

key根据name计算出来的hash值。

name key的具体内容

len name的长度

返回查询结果,未查询到则返回null

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 第一章 Nginx简介 Nginx是什么 没有听过Nginx?那么一定听过它的“同行”Apache吧!Ngi...
    JokerW阅读 32,897评论 24 1,002
  • Nginx API for Lua Introduction ngx.arg ngx.var.VARIABLE C...
    吃瓜的东阅读 11,154评论 0 5
  • request 在nginx中我们指的是http请求,一个http请求,包含请求行、请求头、请求体、响应行、响应头...
    三生纸书阅读 3,621评论 0 0
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,797评论 19 139
  • 1 接到许茜在医院的电话后,白露直接赶了过去,许茜是她高中的好朋友,虽然后来联系得不是很多了,但白露还是很珍惜她高...
    Whale小诺阅读 4,121评论 0 2