-
Apache Spring boot(내부 tomcat) 연동STUDY/백엔드 2020. 12. 24. 18:59
apache와 tomcat은 연동을 위해서 AJP를 통해 통신을 해야한다. apache는 80포트로 들어오는 요청을 처리하고, 요청 중 서블릿이 필요한 요청은 tomcat을 통해 처리한다. AJP를 이용한 연동을 위해 mod_jk 모듈을 사용한다.
1. httpd_conf 파일 수정
LoadModule jk_module modules/mod_jk.so // 모듈 위치
<IfModule mod_jk.c>
JkWorkersFile "workers.properties파일 경로"
JkLogFile "logs/mod_jk.log.%y%m%d 86400 "
JkLogLevel error JkLogStampFormat "[%a %b %d %H:%M:%S %Y]"
</IfModule>2. workers.properties 추가 - 연동할 tomcat의 목록
worker.list=worker1 // 사용할 tomcat 인스턴스들의 리스트
worker.worker1.port=8001
worker.worker1.host=127.0.0.1
worker.worker1.type=ajp13
worker.worker1.retries=13. application.properties 설정
tomcat.ajp.protocol=AJP/1.3
tomcat.ajp.port=8001
tomcat.ajp.enabled=true4. Springboot ContainerConfig 추가
import org.apache.catalina.connector.Connector;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.web.embedded.tomcat.TomcatServletWebServerFactory;
import org.springframework.boot.web.servlet.server.ServletWebServerFactory;
import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration;
@Configuration
public class ContainerConfig {
@Value("${tomcat.ajp.protocol}")
String ajpProtocol;
@Value("${tomcat.ajp.port}")
int ajpPort;
@Bean
public ServletWebServerFactory servletContainer() {
TomcatServletWebServerFactory tomcat = new TomcatServletWebServerFactory();
tomcat.addAdditionalTomcatConnectors(createAjpConnector());
return tomcat;
}
private Connector createAjpConnector() {
Connector ajpConnector = new Connector(ajpProtocol);
ajpConnector.setPort(ajpPort);
ajpConnector.setSecure(false);
ajpConnector.setAllowTrace(false);
ajpConnector.setScheme("http");
((AbstractAjpProtocol<?>)ajpConnector.getProtocolHandler()).setSecretRequired(false);
return ajpConnector;
}
}1) 아파치 웹서버의 httpd.conf 에 톰캣 연동을 위한 설정을 추가하고 톰캣에서 처리할 요청을 지정함.
2) 사용자의 브라우저는 아파치 웹서버(보통 80포트)에 접속해 요청
3) 아파치 웹서버는 사용자의 요청이 톰캣에서 처리하도록 지정된 요청인지 확인. 요청을 톰캣에서 처리해야 하는 경우
아파치 웹서버는 톰캣의 AJP포트(8001포트)에 접속해 요청을 전달
4) 톰캣은 아파치 웹서버로부터 요청을 받아 처리한 후, 처리 결과를 아파치 웹서버에 되돌려줌
5) 아파치 웹서버는 톰캣으로부터 받은 처리 결과를 사용자에게 전송
'STUDY > 백엔드' 카테고리의 다른 글
Bean (0) 2021.01.05 Mybatis (0) 2020.12.31 Server Log (0) 2020.12.28 TC(Test Case) & JUnit (0) 2020.12.18 WEB 서버와 WAS (0) 2020.12.17