我们有以下设置: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服务器。