2016-08-04 91 views
0

我對特定的nginx設置有問題。場景如下所示:應用程序需要通過nginx代理訪問couchdb服務。 nginx需要設置授權頭才能訪問後端。問題在於後端服務端點的DNS更改有時會導致我的服務停止工作,直到重新加載nginx。動態nginx上游不能與授權標頭一起工作

我試圖將上游設置爲一個變量,但是當我這樣做時,授權停止工作,後端返回403.當我使用上游指令時,它工作得很好。上游變量具有正確的值,日誌中沒有錯誤。

的配置如下片段:

set $backend url.to.backend; 

location/{ 
    proxy_pass https://$backend/api; 
    proxy_redirect off; 
    proxy_http_version 1.1; 
    proxy_set_header Connection ""; 
    proxy_set_header Host url.to.backend; 
    proxy_set_header Authorization "Basic <authorization_gibberish>"; 
    proxy_temp_path /mnt/nginx_proxy; 
} 

任何幫助將不勝感激。

回答

0

除非您有商業版本,否則nginx會緩存上游的解析(proxy_pass基本上是「一個服務器上游」),因此重新解析它的唯一方法是執行重新啓動或重新加載配置。這是假設變化的DNS是問題。

upstream module文檔:

此外,下面的參數都可以作爲我們 商業訂閱的一部分:

...

決心 - 顯示器的變化對應於服務器域名的IP 地址,以及 自動修改上游配置而不需要 重新啓動nginx(1.5.12)