目前我正在将 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
但是,您的正则表达式可能有缺陷。 的正则表达式([\w-]+)
在与 PCRE 引擎一起使用时不会匹配点字符。 您可以在https://regex101.com/
根据PCRE 文档:
“单词”字符是下划线或任何字母或数字字符。
因此,您的正则表达式适用于“short-host-name”之类的值,但不适用于“fully-qualified.example.com”。