Несмотря на то, что ответ @soulseekah является полным и правильным, я хочу опубликовать ответ для людей, использующих Nginx, внутри кластера контейнеров, будь то внутри Kubernetes или Docker Compose.распознаватель для Nginx с адресом вашего фактического преобразователя DNS.Для Docker это всегда в 127.0.0.11
, для Kubernetes см. этот ответ
Внутри моей докерной сети мне удалось успешно настроить динамический proxy_pass
при этом:
resolver 127.0.0.11 [::1];
set $bcknd http://$http_XBackend$uri$is_args$args;
proxy_pass $bcknd;
Обратите внимание, что было фундаментальным для добавления $uri$is_args$args
, поскольку в противном случае проход прокси не учитывал путь и строку запроса.
PS: в моем примере я читаю заголовок, используя переменную $http_XBackend
.Заголовок передается клиентом как XBackend: host
, здесь host
должно быть именем хоста, на который вы хотите переадресовывать свои звонки.Я безуспешно пытался использовать заголовки с тире в них, мне пришлось использовать заголовок без тире.