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

Nginx proxy_set_header Хост для управления RPC

Мы экспериментируем со службой RPC (линкер), который действует как клей между нашими микросервисами - считывает их расположение из локального кластера Consul и т. д. Теперь Linkerd ожидает увидеть Host заголовок входящего запроса, чтобы выяснить, к какой службе обратиться.

В нашей топологии nginx работает как край который затем должен прокси-сервер Linkerd и установить заголовок Host в зависимости от пути.

Итак, простая конфигурация, которую мы тестируем, выглядит так:

    location /api/v1/services/service-x {
            proxy_set_header Host service-x;
            proxy_pass http://linkerd:4140;
    }

В этом нет ничего необычного. Он соответствует путям, которые являются путями service-x, затем пытается proxy_pass эти запросы к linkerd с именем службы, установленной в заголовке, который Linkerd должен получить.

Мы видим, что заголовок Host никогда не устанавливается. Сервис доступен через Linkerd, если я curl -H "Host: service-x" linkerd:4140/some/x/path.

Как мы должны устанавливать заголовки для восходящих потоков с помощью nginx? Или я делаю глупость?

Спасибо!

На самом деле это было то, что я пропустил - linkerd поддерживает HTTP/1.1 прямо из коробки, и nginx использовал 1.0 для перенаправления в службу компоновщика. Добавление

proxy_http_version 1.1

Исправлена ​​проблема для меня.