Рейтинг:0

Используйте переменную заголовка в NGINX для пересылки трафика

флаг in

Я использую NGINX (нгинкс образ Docker) в качестве обратного прокси-сервера и хотите использовать $хост переменная в транслировать/сервер контекст для пересылки трафика на конкретный хост, который определен в Хозяин параметр заголовка входящего запроса. Конфигурация следующая:

События {
}

транслировать {
  log_format log_stream '$remote_addr [$time_local] $протокол'
  '$status $bytes_sent $bytes_received $session_time';

  access_log /var/log/nginx/access.log log_stream;
  журнал_ошибок /var/log/nginx/error.log;

  сервер {
    резолвер 8.8.8.8 ipv6=выкл.;
    слушать 127.0.0.1:18443;
    proxy_pass $ хост: 443;
  }
}

При запуске возникает ошибка:

[возникновение] 1#1: неизвестная переменная "host"

Согласно документация по nginx эта переменная должна быть заполнена. Знаете ли вы, как я могу использовать его внутри директивы сервера для пересылки трафика? Могу ли я использовать другой параметр заголовка с указанным именем/адресом хоста для пересылки трафика?

Michael Hampton avatar
флаг cz
Какое имя хоста? В контексте потока такой переменной нет. Вы просто проксируете необработанный поток TCP. Какой заголовок хоста?
ttsokov avatar
флаг in
Как насчет этой переменной [$hostname](https://nginx.org/en/docs/stream/ngx_stream_core_module.html#var_hostname) из модуля ngx_stream_core_module
Michael Hampton avatar
флаг cz
Это имя хоста системы, на которой работает nginx (или, в случае с Docker, случайное имя контейнера).
Рейтинг:1
флаг us

Похоже, вы намерены пройти через TLS-соединение через nginx. транслировать модуль. Если вы хотите настроить таргетинг на разные места назначения в зависимости от поля SNI заголовка TLS, вам необходимо использовать следующую конфигурацию:

карта $ssl_preread_server_name $destination {
    host1.example.com бэкенд1;
    host2.example.com бэкенд2;
    бэкэнд по умолчанию3;
}

транслировать {
    восходящий бэкэнд1 {
        сервер 192.168.100.1:443;
    }

    восходящий сервер2 {
        сервер 192.168.100.2:443;
    }

    восходящий сервер3 {
        сервер 192.168.100.3:443;
    }

    сервер {
        слушать 127.0.0.1:443;
        proxy_pass $ назначения;
    }
}

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.