查看: 136|回复: 0

nginx的域名解析

[复制链接]

2

主题

0

回帖

0

积分

热心网友

金币
0
阅读权限
220
精华
0
威望
0
贡献
0
在线时间
0 小时
注册时间
2010-8-21
发表于 2019-7-19 14:26:00 | 显示全部楼层 |阅读模式

1、​创建域名解析结构:

 ngx_resolver_create(ngx_conf_t *cf, ngx_str_t *names, ngx_uint_t n)

这里面的names是dns服务器的地址,n是dns服务器地址的个数, 此函数调用后,会形成本机到dns服务器的upd连接结构,值得说明的是,如果names传入NULL,n传入0,也是可以获取到默认的dns地址的,所以一个经典的用法是创建一个http的配置块,在配置解析的时候指定dns服务器的地址,同时在配置结束后使用ngx_resolver_create(cf, NULL, 0),这样即使没有配置dns服务器的地址也能用默认的地址进行解析。

2、域名解析流程:

ngx_resolve_start 如果是ipv4地址,这里直接设置quick标记位,后面处理会直接调用回调函数。

设置解析后的回调处理函数handler、超时时间、回调传递数据等。

ngx_resolve_name进行域名解析,如果quick已经被置位则调用回掉函数,否则调用ngx_resolve_name_locked,里面先查询红黑树中的缓存,没有的话,建立红黑树结点,作为下一次查询的缓存,发送解析请求到服务器,有了请求结果后调用回掉函数处理请求。
 
3、解析后的回调处理函数
ctx->addrs,ctx->naddrs 为解析后的地址列表
注意:在handler中都需要调用ngx_resolve_addr_done来标识查询结束,用来释放资源。


来源:https://www.cnblogs.com/bewolf/p/11213063.html
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

圆梦公社,专注于为全球华人提供纯粹技术交流的地方,请勿发布任何政治及违法的言论。如有相关侵权、举报、投诉及建议等,请发 E-mail:[email protected]

Powered by Discuz! X5.0 © 2001-2026 Discuz! Team.

在本版发帖返回顶部