У меня есть клиент 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;
}