读了wscschool的nginx教程,感觉里面的初始化通配符的哈希表的方式很巧妙,记录一下。
nginx根据不同的通配符匹配模式初始化哈希表。只记录通配符在前的匹配模式,通配符在后的匹配模式相对简单,类推即可
1. 对于\*.abc.com这种通配符在前的匹配模式
Q:得到一个key值如何确定其是否能与\*.abc.com通配符匹配呢?
A:逆向匹配,首先将key以"."进行切分,判断最后一块的值是否是com,是的话向前进一步判断下一块的值是否是abc,是的话进一步判断是否有下一块,有的话命中。
Q:基于上述的匹配逻辑,应该怎么初始化哈希表呢?
A:得到key值后将key以"."进行切分,切分将各个切分后的值反转。将第一个值做为key值存储到哈希表中,value为下一个哈希表。将第二个值存到第二个哈希表。以此类推