解決nginx啓動時域名解析失敗而致使服務啓動失敗的問題

問題:

nginx啓動或者reload的時候,會對proxy_pass後面的域名進行DNS解析,若是解析失敗,啓動就會失敗或者reload失敗。nginx

咱們是to B的產品,客戶的環境多是不通公網的,所以不能使用公網DNS服務,進而致使在ng啓動的時候,對proxy_pass後緊跟域名的dns解析失敗,最終致使nginx啓動失敗。服務器

 

 

解決方案:

不直接在proxy_pass後寫域名,而經過變量的方式配置,以下:spa

 

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

除了上面的配置以外,還要在server屬性的平行域下使用resolver指令,以下代理

resolver 114.114.114.114;

Why?code

假如proxy_pass後緊跟域名,那麼在nginx啓動的時候,會使用/etc/resolv.conf下配置的DNS服務器進行域名解析。server

採用變量的方式後,nginx啓動時不會再去解析變量所對應的域名,可是會在進行代理訪問的時候,進行域名解析,此時不會使用/etc/resolv.conf配置的DNS服務器,必須使用reslover指令指定DNS服務地址。blog

相關文章
相關標籤/搜索