NGINX 测试配置文件时为啥会去访问 DNS? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Distributions
Ubuntu
Fedora
CentOS
中文资源站
网易开源镜像站
zhoudaiyu
V2EX    Linux

NGINX 测试配置文件时为啥会去访问 DNS?

  •  
  •   zhoudaiyu
    PRO
    2022-03-10 17:40:31 +08:00 2982 次点击
    这是一个创建于 1392 天前的主题,其中的信息可能已经有所发展或是发生改变。

    最近发现某台 NGINX 服务器执行 nginx -t 的时候返回结果非常慢,其他机器非常快,今天决定解决一下,遂用 strace 打印了 nginx -t 执行时的系统调用,抓出来了几个慢的系统调用,类似于 https://i.v2ex.co/rvO8s03v.png 这种,然后我尝试在执行 nginx -t 的同时,循环执行 lsof -d 5 观察到了 NGINX 一直在连接 pdns.dnspod.cn 这个域名,查看了 resolve.conf ,确实首个配置是 nameserver 119.29.29.29 ( dnspod ),第二个是 nameserver 223.5.5.5 (阿里),对调了两者在配置文件中的位置后,nginx -t 变得非常快。现在有两个疑问,第一是为啥 nginx -t 的时候要去测试 DNS ?第二个就是为什么我在 /etc/resolve.conf 中明明写的是 IP 地址( 119.29.29.29 ),nginx 会解析到 pdns.dnspod.cn 这个域名呢?而且 pdns.dnspod.cn 解析出的 IP 也并不是 119.29.29.29 。

    8 条回复    2022-03-11 11:40:19 +08:00
    wy315700
        1
    wy315700  
       2022-03-10 17:46:03 +08:00
    DNS 反向解析


    $ dig -x 119.29.29.29

    ; <<>> DiG 9.11.26-RedHat-9.11.26-4.el8_4 <<>> -x 119.29.29.29
    ;; global options: +cmd
    ;; Got answer:
    ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 15379
    ;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1

    ;; OPT PSEUDOSECTION:
    ; EDNS: version: 0, flags:; udp: 4096
    ; COOKIE: 40642852c08e1596 (echoed)
    ;; QUESTION SECTION:
    ;29.29.29.119.in-addr.arpa. IN PTR

    ;; ANSWER SECTION:
    29.29.29.119.in-addr.arpa. 39637 IN PTR pdns.dnspod.cn.

    ;; Query time: 6 msec
    ;; SERVER: 119.29.29.29#53(119.29.29.29)
    ;; WHEN: Thu Mar 10 17:45:43 CST 2022
    ;; MSG SIZE rcvd: 94
    zhoudaiyu
        2
    zhoudaiyu  
    OP
    PRO
       2022-03-10 17:49:51 +08:00 via iPhone
    但是为啥要反向解析呢?我都写的是 IP 啊
    salmon5
        3
    salmon5  
       2022-03-10 17:50:06 +08:00   1
    nginx -t 会检测并缓存 proxy_pass 后的域名对应的 IP ,这里需要调用 DNS
    salmon5
        4
    salmon5  
       2022-03-10 17:53:48 +08:00   1
    nginx 调用 DNS 直接连的是 IP ,lsof -d 5 对外连的 DNS 进行了反向解析,可以 lsof -d 5 -n 就是 IP 了。
    zhoudaiyu
        5
    zhoudaiyu  
    OP
    PRO
       2022-03-10 19:12:32 +08:00
    @salmon5 #4 大佬,你说的对,加了-n 确实就不反向解析了,但是还有一点疑问,我看了一下 strace ,当时很多都是通过 dnspod 解析超时了,然后换了第二个位置的阿里 dns 解析出了 IP ,可是当时抓了一下包,看了确实可以用 dnspod 去解析域名的,所以还是觉得有点奇怪。
    watcher
        6
    watcher  
       2022-03-11 10:31:02 +08:00
    lsof 本着一切皆文件的原则 肯定优先展示的不是网络地址而是主机号然后会调用 gethostbyaddr
    zhoudaiyu
        7
    zhoudaiyu  
    OP
    PRO
       2022-03-11 10:56:03 +08:00
    @watcher #6 非抬杠,就是想问一下:优先展示主机号而不是 IP 地址的逻辑为啥是一切皆文件呢?
    watcher
        8
    watcher  
       2022-03-11 11:40:19 +08:00   1
    @zhoudaiyu 桌面放个文件 给人展示文件名比直接展示文件地址更直观
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     4044 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 27ms UTC 09:54 PVG 17:54 LAX 01:54 JFK 04:54
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86