2016-08-04 88 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)