Назад | Перейти на главную страницу

Nginx: можно ли динамически разрешать DNS в блоке местоположения?

В настоящее время я использую Nginx с Kubernetes. В моем файле конфигурации Nginx у меня есть следующий проход прокси:

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 действительный = 5 с).

Нам нужно, чтобы это выполнялось динамически, потому что при запуске Nginx значение $ 1 может быть неизвестно и должно быть разрешено по запросу.

Способен ли Nginx выполнять это динамическое разрешение DNS на лету?

Да, Nginx сможет сделать динамическое разрешение.

Однако ваше регулярное выражение может быть некорректным. Регулярное выражение ([\w-]+) будет / не совпадать / соответствовать символу точки при использовании с механизмом PCRE. Вы можете проверить это на https://regex101.com/

Согласно Документы PCRE:

Символ «слова» - это подчеркивание или любой символ, являющийся буквой или цифрой.

Таким образом, ваше регулярное выражение будет работать для таких значений, как «short-host-name», но не «full-qualified.example.com».