Nginx:可以在位置块中动态解析 DNS 吗?

Nginx:可以在位置块中动态解析 DNS 吗?

目前我正在将 Nginx 与 Kubernetes 结合使用。在我的 Nginx conf 文件中,我有以下代理传递:

location ~ /myPath/([\w-]+)/resources {
    rewrite ^/myPath/([\w-]+)/resources/(.*)$ /myNewPath/$1/resources/$2 break;
    proxy_pass http://$1;
}

目前 Nginx 抱怨它无法在运行时解析 $1 来执行 proxy_pass(尽管我们指定了 SkyDNS 解析器,即解析器 10.250.0.5 valid=5s)。

我们需要动态地完成此操作,因为在 Nginx 启动时可能不知道 $1 的值,并且必须在请求时解析。

Nginx 是否能够动态执行此动态 DNS 解析?

答案1

是的,Nginx可以做 动态分辨率

但是,您的正则表达式可能有缺陷。 的正则表达式([\w-]+)在与 PCRE 引擎一起使用时不会匹配点字符。 您可以在https://regex101.com/

根据PCRE 文档

“单词”字符是下划线或任何字母或数字字符。

因此,您的正则表达式适用于“short-host-name”之类的值,但不适用于“fully-qualified.example.com”。

相关内容