问题:
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服务地址。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。