每个位置的 Nginx 解析器

每个位置的 Nginx 解析器

使用解析器每个位置,我在服务器上找到了这个配置,但我的猜测是它没有“重新解析”,因为它proxy_pass也没有使用变量

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

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

来自文档:

当您使用变量在 proxy_pass 指令中指定域名时,NGINX 会在其 TTL 过期时重新解析该域名。

因此,如果我是对的,那么以前的配置可以像这样重写:

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 /bar {
    set $bar_backend_servers bar_backends.example.com;
    proxy_pass http://$bar_backend_servers;
 }

这是正确的吗?或者在使用每个位置时有什么技巧?是不是通过使用每个位置的解析器,就不需要创建变量并将其传递给proxy_pass

相关内容