openresty里解析域名

我们可以直接在 nginx 的配置文件中使用 resolver 指令直接设置使用的 nameserver 地址。



官方文档中是这么描述的



Syntax: resolver address … [valid=time] [ipv6=on|off];
Default: —
Context: http, server, location
一个简单的例子
resolver 8.8.8.8 114.114.114.114 valid=3600s;




不过这样的问题在于nameserver被写死在配置文件中,如果使用场景比较复杂或有内部dns服务时维护比较麻烦。



我这边把解析的结果放入了lrucache缓存了5分钟,你们同样可以把结果放入shared中来减少worker查询次数。



还有些同学可能会在hosts文件中自定义域名和ip,这时候resolve是无法正常解析的。



这个时候可以借助dnsmasq这个服务来缓存我们的dns结果,而且hosts文件中的定义可以被该服务识别。



需要在nginx的配置文件中,设置resolver为dnsmasq服务的监听地址即可。



https://hambut.com/2016/09/09/how-to-resolve-the-domain-name-in-openresty/



http://www.dpdk.eu/



https://github.com/keplerproject/luacov


Category nginx