Ответ 1
Мой ответ немного поздний, но у меня недавно была эта проблема, и я хочу опубликовать решение, которое сработало для меня.
Первоначально я думал, что установка tomcat для использования заголовков X-Forwarded будет достаточной, но RemoteIPValve от Tomcat, который обычно должен обрабатывать этот случай, не работал у меня.
Моим решением было добавить EmbeddedServletContainerCustomizer и добавить ConnectorCustomizer: (обратите внимание, что я использую Tomcat 8 здесь)
@Component
public class TomcatContainerCustomizer implements EmbeddedServletContainerCustomizer {
private static final Logger LOGGER = LoggerFactory.getLogger(TomcatContainerCustomizer.class);
@Override
public void customize(final ConfigurableEmbeddedServletContainer container) {
if (container instanceof TomcatEmbeddedServletContainerFactory) {
final TomcatEmbeddedServletContainerFactory tomcat = (TomcatEmbeddedServletContainerFactory) container;
tomcat.addConnectorCustomizers(connector -> {
connector.setScheme("https");
connector.setProxyPort(443);
});
LOGGER.info("Enabled secure scheme (https).");
} else {
LOGGER.warn("Could not change protocol scheme because Tomcat is not used as servlet container.");
}
}
}
Важно то, что вы не только устанавливаете схему на https, но и ProxyPort, без которой все внутренние перенаправления из Spring Boot были перенаправлены на порт 80.
Надеюсь, что поможет: -)