动态nginx上游不适用于授权标头

时间:2016-08-04 15:54:52

标签: nginx http-proxy

我遇到了特定nginx设置的问题。场景是这样的:应用程序需要通过nginx代理访问couchdb服务。 nginx需要设置授权标头才能访问后端。问题是后端服务端点的DNS有时会发生变化,导致我的服务停止工作,直到我重新加载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; 
} 

任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

除非您有商业版本,否则nginx会缓存上游的解析(proxy_pass基本上是一个&#34;一个服务器上游&#34;),因此重新解析它的唯一方法是执行重启或重新加载配置。这是假设更改DNS是问题。

来自upstream module文档:

  

此外,以下参数作为我们的一部分提供   商业订阅:

...

  

resolve - 监控IP的变化   与服务器的域名对应的地址,和   无需自动修改上游配置   重启nginx(1.5.12)