본문 바로가기

WEB-SERVER/OHS & JBCS & Apache

mod_proxy(이론)

728x90

우선적으로 mod_proxy / mod_jk의 공통점 및 차이점을 알아보자.

 

공통점 : 둘 다 Apache 앞단에서 받아서 뒤쪽 애플리케이션 서버로 전달하는 역할

 

  • 정적/동적 요청 분리
  • 리버스 프록시 구성
  • 로드밸런싱
  • 장애 시 다른 노드로 우회
  • 앞단 Apache를 통한 SSL 종료
  • URL 기준으로 특정 백엔드에 전달

차이점 :

1) mod_proxy : Apache의 범용 프록시 모듈 --> 백엔드와 통신할 때 여러 프로토콜을 지원

대표적으로:

  • HTTP / HTTPS
  • AJP
  • WebSocket
  • FCGI 등

mod_proxy를 쓰는 목적

  • 웹 서버를 범용 reverse proxy 로 쓰고 싶을 때
  • 백엔드가 Tomcat/JBoss뿐 아니라 다양한 서버일 때
  • HTTP 기반으로 단순하고 표준적인 구성을 원할 때
  • 최근 권장되는 방식처럼 AJP보다 HTTP/HTTPS 프록시를 선호할 때

대표 모듈

  • mod_proxy
  • mod_proxy_http
  • mod_proxy_ajp
  • mod_proxy_balancer

특징

  • 설정이 비교적 직관적이다
  • Apache 표준 프록시 기능에 가깝다
  • 다양한 백엔드에 재사용 가능하다
  • HTTP 프록시를 쓰면 디버깅이 쉬운 편이다
ProxyPass /app http://192.168.56.101:8080/app
ProxyPassReverse /app http://192.168.56.101:8080/app

 

2) mod_jk : AJP 프로토콜을 사용하여 Apache와 Tomcat 계열 WAS를 연결하기 위한 커넥터

원래는 Apache ↔ Tomcat 연동에서 많이 썼고, JBoss EAP/WildFly에서도 AJP 리스너가 있으면 연결 가능하다.

mod_jk를 쓰는 목적

  • Apache와 Tomcat/JBoss를 AJP 기반으로 안정적으로 연동하고 싶을 때
  • 예전부터 쓰던 레거시 환경을 유지할 때
  • sticky session, worker 관리, 상태 제어를 좀 더 세밀하게 하고 싶을 때
  • 이미 workers.properties 기반 운영 체계가 있을 때

대표 파일

  • workers.properties
  • JkMount
  • JkUnmount
  • JkLogFile

특징

  • Tomcat/AJP 중심이다
  • 로드밸런싱/worker 제어가 세밀하다
  • 운영 경험이 많은 환경에서는 익숙하다
  • 대신 범용성은 mod_proxy보다 떨어진다
JkMount /app/* node1

 

 

1) 범용성

  • mod_proxy: 범용
  • mod_jk: Tomcat/AJP 특화

즉, mod_proxy는 “여러 종류의 백엔드로 프록시”에 강하고,
mod_jk는 “Apache ↔ Tomcat/JBoss AJP 연동”에 더 특화

2) 통신 방식

  • mod_proxy: HTTP, HTTPS, AJP 등 다양
  • mod_jk: 주로 AJP

요즘은 보안과 단순성 때문에 AJP 대신 HTTP/HTTPS reverse proxy를 더 선호
그래서 신규 구성에서는 mod_proxy가 더 자주 선택

3) 설정 방식

  • mod_proxy: ProxyPass, ProxyPassReverse 중심
  • mod_jk: workers.properties + JkMount 중심

4) 세션 스티키/로드밸런싱 운용

둘 다 가능하지만 스타일이 다르다.

  • mod_proxy_balancer: Apache 표준 방식
  • mod_jk: worker 중심, sticky session 제어가 전통적으로 강점

5) 디버깅

  • mod_proxy(HTTP): 요청 흐름을 보기 쉬움
  • mod_jk(AJP): AJP 특성상 HTTP보다 직관성은 떨어짐