Application Servers & Java
[4편] mod_proxy_ajp를 이용한 Apache-Tomcat 연동 실무 가이드
midworker
2025. 5. 16. 22:25
반응형
[4편] mod_proxy_ajp를 이용한 Apache-Tomcat 연동 실무 가이드
이전 3편까지 Apache, Tomcat의 설치 및 설정을 마쳤다면 이제 두 서비스를 연동하여 하나의 웹 시스템으로 운영해야 합니다.
이번 편에서는 mod_proxy_ajp
를 활용한 Apache-Tomcat 연동 실무 설정을 정리합니다.
✅ Apache-Tomcat 연동 방식 비교
방식 | 설명 | 장점 | 단점 |
---|---|---|---|
mod_jk |
별도 모듈(mod_jk.so)을 통해 AJP 프로토콜로 연동 | 고성능, 정교한 로드밸런싱 | 설정 파일 복잡, 유지 어려움 |
mod_proxy_ajp |
Apache 기본 모듈로 AJP 연동 | 설정 단순, Apache 2.4 이상 기본 포함 | 성능과 기능 제한적 |
mod_proxy_http |
HTTP 기반 프록시 연동 | HTTPS 환경 대응 유리 | 헤더 전송 한계, 세션 공유 복잡 |
✅ mod_proxy_ajp 구성 흐름
[Client] → [Apache:80] --AJP--> [Tomcat:8009]
✅ Apache 설정 예시 (httpd.conf)
🔹 mod_proxy 모듈 활성화 확인
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_ajp_module modules/mod_proxy_ajp.so
🔹 AJP 프록시 연동 설정
<IfModule mod_proxy.c>
ProxyRequests Off
ProxyPreserveHost On
<Proxy balancer://tomcat-cluster>
BalancerMember ajp://127.0.0.1:8009 route=tomcat1
ProxySet stickysession=JSESSIONID
</Proxy>
ProxyPass /app/ balancer://tomcat-cluster/app/
ProxyPassReverse /app/ balancer://tomcat-cluster/app/
</IfModule>
route=tomcat1
은 Tomcat의jvmRoute
설정과 일치해야 함
✅ Tomcat 설정 (server.xml)
<Engine name="Catalina" defaultHost="localhost" jvmRoute="tomcat1">
...
</Engine>
<Connector port="8009" protocol="AJP/1.3"
connectionTimeout="20000"
redirectPort="8443" />
✅ Sticky Session이 필요한 이유
- 클러스터 환경에서 세션이 유지되도록 하기 위해 사용
- Apache는 JSESSIONID 쿠키의
route
값을 읽고 해당 서버로 트래픽 전달
예:
JSESSIONID=1234567890ABCDEF.tomcat1
✅ 설정 확인 및 테스트
1. Apache 재기동
systemctl restart httpd
2. Tomcat 로그 확인
/logs/localhost_access_log.*.txt
로 AJP 요청이 정상 유입되는지 확인
3. 브라우저 쿠키 확인
- 개발자 도구 >
JSESSIONID
값 확인 →tomcat1
route가 붙어야 정상
✅ 트러블슈팅 포인트
증상 | 원인 |
---|---|
502 Bad Gateway | Tomcat 미기동 or AJP 포트 오류 |
세션 초기화 반복 | jvmRoute 불일치, stickySession 미설정 |
프록시 헤더 누락 | ProxyPreserveHost 미설정 |
✅ 마무리
mod_proxy_ajp
는 mod_jk
보다 설정이 간단하고 Apache 내장 모듈이므로 별도 빌드 없이도 연동이 가능합니다.
클러스터 구성과 세션 유지를 위해 route
설정과 ProxySet stickysession
조합은 꼭 확인해야 합니다.
반응형