我遇到了特定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;
}
任何帮助将不胜感激。
答案 0 :(得分:0)
除非您有商业版本,否则nginx会缓存上游的解析(proxy_pass基本上是一个&#34;一个服务器上游&#34;),因此重新解析它的唯一方法是执行重启或重新加载配置。这是假设更改DNS是问题。
来自upstream module文档:
此外,以下参数作为我们的一部分提供 商业订阅:
...
resolve - 监控IP的变化 与服务器的域名对应的地址,和 无需自动修改上游配置 重启nginx(1.5.12)