API Gateway с использованием Spring Cloud + Zuul + Consul: динамическая маршрутизация не работает при использовании HTTPS - PullRequest
0 голосов
/ 20 февраля 2019

В настоящее время я работаю над шлюзом API для централизации вызовов API REST.Мы используем Spring Cloud (версия Edgware.SR3) с Zuul (1.3.0) для обработки обнаружения служб и Consul в качестве реестра служб.

В первой версии маршруты к каждой службе были зарегистрированы в конфигурации шлюзаиспользуя zuul.routes.myApiName.url, и он работал нормально.

Затем мы хотели использовать динамическую маршрутизацию, чтобы иметь несколько экземпляров каждого API.

Я удалил zuul.route.myApiName.url для этой цели.Проблема заключается в том, что мои вызовы API через шлюз возвращаются, и возникает ошибка:

Неверный запрос Для этой комбинации хоста и порта требуется TLS.

Вот конфигурацияAPI, регистрируемый в Консуле:

spring.cloud.discovery.enabled=true
spring.cloud.consul.host=@consul_host_ip@
spring.cloud.consul.port=@consul_host_port@
spring.cloud.consul.discovery.scheme=https

А вот конфигурация маршрута Zuul в шлюзе:

zuul.host.socket-timeout-millis=60000
zuul.add-proxy-headers=false
zuul.ignored-services=*
zuul.routes.myApiName.path=/myApiName/**
zuul.routes.myApiName.serviceId=myApiName

API правильно зарегистрирован в Консуле, и проверка работоспособности успешно использует HTTPS:

HTTP GET https://hostname:port/health: 200  Output: {"description":"Composite Discovery Client","status":"UP"}

Сертификаты также хорошо настроены, поскольку я могу напрямую вызывать свой API с помощью HTTPS.Но кажется, что перенаправление Zuul использует HTTP вместо HTTPS (у меня та же ошибка, если я вызываю свой API в прямом режиме (без шлюза) с использованием HTTP).

Я боролся с этим некоторое время, поэтому я хотел бы знать, если отсутствует конфигурация, заставляющая Zuul использовать HTTPS при перенаправленном вызове API?

Заранее спасибо!

Ответы [ 2 ]

0 голосов
/ 18 июня 2019

Я наконец нашел решение: мне пришлось добавить это свойство: ribbon.IsSecure=true

0 голосов
/ 19 мая 2019

Просто настройте

  zuul.addProxyHeaders = false

Поскольку заголовки прокси добавляются Zuul при пересылке любого запроса в бэкэнд.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...