В настоящее время я работаю над шлюзом 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?
Заранее спасибо!