nginx的域名解析

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来标识查询结束,用来释放资源。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • nginx惊群问题

    了解惊群问题首先要了解下nginx进程部署架构:nginx进程主要是一个主进程(master)和多个工作进程(worker)。master进程并不处理网络请求,...

    用户1215536
  • 计算机系统可靠性的计算

    计算机系统的可靠性是制从它开始运行(t=0)到某时刻t这段时间内能正常运行的概率,用R(t)表示。 失效率是指单位时间内失效的元件数与元件总数的比例,以λ表示。...

    用户1215536
  • 桥接模式

    一、概述 1、桥接模式将抽象部分与它的实现部分分离,使它们都可以独立的变化。 2、在软件系统中,某些类型由于自身的逻辑,它具有两个或多个维度的变化,桥接模式把这...

    用户1215536
  • 基于libsvm的中文文本分类原型

    李海波 http://blog.csdn.net/marising/article/details/5844063 支持向量机(Support Vector...

    机器学习AI算法工程
  • Ubuntu系统下静态DNS配置详解

    因为实验室实现的拟态存储系统需要实现动态变更ip地址,所以需要搭建一个dns服务器,并且将需要查询变更ip地址的服务器都绑定到同一台dns服务器之上。通常在Re...

    HappenLee
  • Blazor带我重玩前端(二)

    Blazor目前有两种托管模式,一种是Server-Side模式,一种是WebAssembly模式。官方首先支持的是Service-Side模式,使用WebAs...

    Edison.Ma
  • 基于dba_hist_sqlstat查看sql语句的性能历史(r4笔记第92天)

    在生产环境中,如果系统已经稳定,调优的空间就会越来越小,但是不代表没有调优的余地,可能工作的重心就会更加求稳,sql调优就是一项不间断的工作,很多工作还是需要前...

    jeanron100
  • Android开发必知--WebView加载html5实现炫酷引导页面

      大多数人都知道,一个APP的引导页面还是挺重要的,不过要想通过原生的Android代码做出一个非常炫酷的引导页相对还是比较复杂的,正巧html5在制作炫酷动...

    codingblock
  • 从编译原理看一个解释器的实现

    『设计模式』中有一个模式可以解释特定的语法规则,它就是解释器模式(Interpreter Pattern)。不同于常见的策略模式或者是工厂模式,解释器模式在....

    用户1161731
  • 【HTB】Traverxec

    可以使用:python -c "import pty;pty.spawn('/bin/bash')"

    yichen

扫码关注云+社区

领取腾讯云代金券