欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  科技

nginx无网络启动失败——proxy_pass域名DNS解析出错

程序员文章站 2022-05-26 15:45:25
问题: nginx启动或者reload的时候,会对proxy_pass后面的域名进行DNS解析,如果解析失败,启动就会失败或者reload失败。 我们是to B的产品,客户的环境可能是不通公网的,因此不能使用公网DNS服务,进而导致在ng启动的时候,对proxy_pass后紧跟域名的dns解析失败, ......

问题:

nginx启动或者reload的时候,会对proxy_pass后面的域名进行dns解析,如果解析失败,启动就会失败或者reload失败。

我们是to b的产品,客户的环境可能是不通公网的,因此不能使用公网dns服务,进而导致在ng启动的时候,对proxy_pass后紧跟域名的dns解析失败,最终导致nginx启动失败。

解决方案:

不直接在proxy_pass后写域名,而通过变量的方式配置,如下:

 set $target https://www.xxx.com;
 proxy_pass $target ;

除了上面的配置之外,还要在server属性的平行域下使用resolver指令,如下

resolver 114.114.114.114;

why?

假如proxy_pass后紧跟域名,那么在nginx启动的时候,会使用/etc/resolv.conf下配置的dns服务器进行域名解析。

采用变量的方式后,nginx启动时不会再去解析变量所对应的域名,但是会在进行代理访问的时候,进行域名解析,此时不会使用/etc/resolv.conf配置的dns服务器,必须使用reslover指令指定dns服务地址。