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