nginx無網絡啟動失敗——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服務地址。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM