Enable Multiple Connectors with Tomcat
운영환경 중 Http와 Https 포트 두 개를 다 열어야 하는 상황이 있을 수 있습니다.
저 같은 경우는 Http로 운영하던 서버를, 최근 Https로 바꿔야 하는 일이 있었는데요.
원래 계획은 Http 프로토콜을 사용해도, 내부에서 Redirect하여 Https로 이동하도록 설정하려 했는데..
WebMvcConfigurer를 상속받으면 제가 설정한 bean보다 WebMvcConfigurer가 먼저 올라가서 이러한 설정이 안된다고 합니다.
그래서 결국은 Http와 Https를 다 허용하는 멀티 포트를 하기로 했습니다. 추가적으로 인프라팀의 도움을 받아 내부망에서는 Http로 붙고, 외부에서는 Https로 접속할 수 있도록 설정을 했습니다.
SpringBoot는 내장 톰캣을 사용하기 때문에, TomcatServletWebServerFactory를 이용하여 사용자가 Customizing할 수 있는 환경을 제공합니다.
Once you’ve got access to a WebServerFactory, you can often add customizers to it to configure specific parts, like connectors, server resources, or the server itself - all using server-specific APIs.
아래와 같이 톰캣에 Http 요청을 받을 수 있도록 Connector 설정을 했습니다.
@Configuration
public class ServletConfig {
@Value("${server.port.http}")
private int serverPortHttp;
@Bean
public ServletWebServerFactory serverFactory() {
TomcatServletWebServerFactory tomcat = new TomcatServletWebServerFactory();
tomcat.addAdditionalTomcatConnectors(createStandardConnector());
return tomcat;
}
private Connector createStandardConnector() {
Connector connector = new Connector("org.apache.coyote.http11.Http11NioProtocol");
connector.setPort(serverPortHttp);
return connector;
}
}
properties 설정
server.port=8443
server.port.http=8080
#SSL
server.ssl.key-store=/home/tomcat/cert/ ..keystore
server.ssl.key-store-password=
server.ssl.key-password=
server.ssl.key-alias= 도메인
참고 : https://docs.spring.io/spring-boot/docs/current/reference/html/howto-embedded-web-servers.html
출처 : https://055055.tistory.com/33
'백엔드 개발 놀이터 > Spring' 카테고리의 다른 글
[Lombok] 롬복 설치 및 사용법 (0) | 2020.04.08 |
---|---|
이클립스(Eclipse)에 SVN(SubVersion) 설치하기 (0) | 2020.04.08 |
[spring] Log4j2 could not find a logging implementation (0) | 2020.04.07 |
[SPRING] 직관적인 log 출력하기 (feat. log4jdbc-remix ) (0) | 2020.04.07 |
WARNING: [SetContextPropertiesRule]{Context} Setting property 'source' to 'org.eclipse.jst.jee.server 문제 (0) | 2020.04.07 |