我有一个关于 nginx 的问题解析器我无法从文档中得到明确的答案。
默认情况下,nginx 使用响应的 TTL 值来缓存答案。可选的 valid 参数允许覆盖它:resolver 127.0.0.1 [::1]:5353 valid=30s;
但是我担心的是如何处理临时 DNS 解析失败(NXDOMAIN 或 DNS 上的某些超时) - 假设我没有设置特定的valid=
。在这种情况下,我将不会在答案部分中使用 TTL。nginx 解析器是否会缓存该负面结果,如果是,设置是否会valid=
影响该负面缓存的“TTL”?
答案1
我已经确定了问题的根本原因,它与负面 DNS 缓存无关。记录下遇到我的问题的任何人,这与内置解析器中的 nginx 的行为有关,同时在 kubernetes 集群中运行并使用集群 kubernetes 服务的 coredns 作为解析器 IP。在这种情况下,nginx 似乎会为所有解析维护通过 kubernetes 服务获得的第一个使用的 coredns 服务端点。如果该 coredns 服务端点消失,则解析器将损坏,直到重新启动 pod 并获取新端点。简而言之,不要尝试将 nginx 解析器与 kubernetes DNS 服务一起使用!