在nginx中解析器有效时间和resolver_timeout的区别是什么

Vad*_*imo 1 nginx

我有这个nginx配置条目.

http {
  resolver 172.17.42.1 valid=600s;
  resolver_timeout 60s;
Run Code Online (Sandbox Code Playgroud)

在此配置中有两个不同的超时.nginx 文档没有告诉我有效resolver_timeout之间的区别是什么.

有人可以详细解释一下吗?

Ale*_*Ten 7

resolve_timeout 设置nginx等待来自解析器(DNS)的anwser的时间.

valid flag表示nginx将resolver的回答视为有效的时间长度,并且不会在该时间段内请求解析器.

在你的例子中,让我们说nginx想要解决example.com.它将询问解析器(172.17.42.1),如果解析器在5秒内没有回答,nginx将使该请求失败(并且可能显示500错误).让我们说解析器成功回答,然后nginx会记住这个答案10分钟.如果nginx需要example.com在该时间内解决,那么它将使用先前的答案而不是再次询问解析器.