Как сообщить Eureka Client, какой порт регистрировать (Spring Cloud) - PullRequest
0 голосов
/ 18 января 2019

У меня есть клиент Eureka, реализованный с Spring Boot с двумя активными портами: 9005 для https и 9010 для http.

Https изначально реализован Spring Boot. Http - это просто дополнительный простой TomcatServletWebServerFactory, добавленный в код.

Теперь проблема в том, что этот клиент Eureka регистрирует себя через порт https, указанный в свойствах приложения как 9005:

server:
   port: 9005
   ssl:
      enabled: true
      ...
   http:
      port: 9010
      address: 127.0.0.1

но мне бы хотелось, чтобы этот клиент регистрировался с http-портом 9010.

Конечно, сам сервер Eureka работает на localhost, а все другие зарегистрированные службы тоже на локальном хосте, говорят только по http.

Https для внешних клиентов, которые не являются веб-браузерами, и там используются пользовательские сертификаты.

Я пробовал nonSecurePort на стороне клиента, но, похоже, это параметр конфигурации только на стороне сервера. Конфигурация My Eureka Client (в дополнение к конфигурации порта, определенной выше):

eureka:
  client:
    serviceUrl:
      defaultZone: http://localhost:8761/eureka/
    healthcheck:
      enabled: true
  instance:
    preferIpAddress: true
    leaseRenewalIntervalInSeconds: 1
    leaseExpirationDurationInSeconds: 2
    nonSecurePortEnabled: true
    nonSecurePort: 9010

Дополнительная реализация HttpServer:

public ServletWebServerFactory servletContainer(@Value("${server.http.port}") int httpPort, @Value("${server.http.address}") String httpHost) throws UnknownHostException {
    Connector connector = new Connector(TomcatServletWebServerFactory.DEFAULT_PROTOCOL);
    connector.setPort(httpPort);
    connector.setAttribute("address", InetAddress.getByName(httpHost).getHostAddress());
    TomcatServletWebServerFactory tomcat = new TomcatServletWebServerFactory();
    tomcat.addAdditionalTomcatConnectors(connector);
    return tomcat;
}
...