【问题标题】:The Nginx reverse proxy does not reach the app via the internal route after restartingNginx反向代理重启后没有通过内部路由到达应用
【发布时间】:2019-10-26 18:12:44
【问题描述】:

我们有以下设置:将 nginx buildpack 作为反向代理,proxy_pass 设置为内部路由 *.apps.internal。设置工作正常,直到内部路由引导的应用程序重新启动。然后我们遇到的问题是应用程序获得了一个新的内部 IP 地址,并且内部 DNS 没有立即将内部路由 *.apps.internal 解析为新的 IP 地址。我们是否缺少某些设置?

手动重启反向代理即可解决问题。但是,这不是一个长期的解决方案。

【问题讨论】:

  • 这是正常的,因为 nginx 会缓存一段时间的 DNS。可能这是可配置的。

标签: dns routes nginx-reverse-proxy swisscomdev


【解决方案1】:

可能使用 Nginx resolver 会有所帮助,来自docs

配置名称服务器,用于将上游服务器的名称解析为 地址,例如: 解析器 127.0.0.1 [::1]:5353;

你可以全局使用它:

resolver 10.0.0.2 valid=300s;
resolver_timeout 10s;

location /foo {
    set $foo_backend_servers foo_backends.example.com;
    proxy_pass http://$foo_backend_servers;
 }

或每个位置:

location /foo {
    proxy_pass http://foo_backends;
    resolver 10.0.0.2 valid=300s;
    resolver_timeout 10s;
}

问题是要知道使用什么 DNS 服务器,从这些链接:

使用resolver 169.254.0.2;,以防万一,169.254.0.0/16 IPv4 范围属于Link-local address,因此最好仔细检查要使用的 DNS 服务器。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-13
    • 1970-01-01
    • 2021-05-03
    • 2019-07-23
    • 1970-01-01
    • 2011-06-08
    相关资源
    最近更新 更多