重新启动后,Nginx 反向代理不会通过内部路由到达应用程序



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

手动重新启动反向代理可以解决此问题。然而,这不是一个长期的解决方案。

可能使用 Nginx resolver可能会有所帮助,来自文档:

配置用于将上游服务器的名称解析为 地址,例如: 解析器 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服务器:

  • https://github.com/cloudfoundry/nginx-buildpack/pull/12
  • https://github.com/cloudfoundry/nginx-buildpack/issues/8

使用resolver 169.254.0.2;,以防万一,169.254.0.0/16 IPv4范围属于链路本地地址,因此最好仔细检查要使用的DNS服务器。

最新更新