nginx 做反向代理 因为域名解析失败 返回502

编程入门 行业动态 更新时间:2024-10-10 06:18:35

nginx 做反向代理 因为<a href=https://www.elefans.com/category/jswz/34/1746411.html style=域名解析失败 返回502"/>

nginx 做反向代理 因为域名解析失败 返回502

现象:稳定运行的环境,nginx 做反向代理,突然有一天对客户端返回502。
排查过程:
        1、第一步查看nginx的日志提示如下错误 :

7446 proxy_connect: upstream connect failed (111: Connection refused) while connecting to upstream, client: 172.22x.xx.xx, server: , request: "CONNECT xxxx.xxxx:443 HTTP/1.0"

实际使用telnet 命令 telnet xxxx.xxxx 443端口是通的;这就有点迷茫的了明明对方端口是服务中的 nginx 为什么连接不上呢?

        2、第二步网络抓包

使用tcpdump命令尝试抓包查看nginx与对端的连接过程

tcpdump -i eth0 host 对方ip 发现抓不到任何网络包。说明nginx都还没有把域名转换成ip 考虑是不是域名解析的问题。打开nginx 配置文件nginx.conf 发现有一行配置:

 resolver     127.0.0.1;

这时想起之前配置过本地的域名解析服务dnsmasq nginx的DNS解析有动态和静态两种 这里通过resolver指令和变量来指定DNS服务的是动态解析的用法。

通过查看本地域名解析服务的解析  nslookup xxxx.xxxx  127.0.0.1 发现出现是另一个IP,这里问题找到了 是nignx 使用的本地DNS域名解析服务返回了错误的IP 难过nginx 连不上对方端口

       3、第三步修改本地DNS

      这里需要基本了解一下dnsmasq这个本地域名解析服务的解析过程:

dnsmasq先去解析hosts文件, 再去解析/etc/dnsmasq.d/下的*.conf文件,而且这些文件的优先级要高于dnsmasq.conf,咱们自定义的resolv.dnsmasq.conf中的DNS也被称为上游DNS,这是最后去查询解析的。

       ok修改hosts 文件添加一行  xxx.xxx.xx.xxx  xxxx.xxxx 

查看是否生效:nslookup xxxx.xxxx  127.0.0.1 ,结果IP没有变化,原来需要重启dnsmasq 服务,dnsmasq是启动加载hosts文件 非动态读取的,

        重启dnsmasq  : service  dnsmasq restart

   再此查看nslookup xxxx.xxxx  127.0.0.1 ;ok 这次IP解析正确了

        nginx无需重启 反向代理终于正常了。

        期间还遇到dnsmasq配置文件有误无法启动的问题 通过查看启动日志 修复了配置文件 这里不赘述。

更多推荐

nginx 做反向代理 因为域名解析失败 返回502

本文发布于:2023-11-17 16:24:20,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1644807.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:域名解析   nginx

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!