AJP?

AJP?

AJP(Apache Jserv Protocol)는 웹 서버 뒤에있는 웹 애플리케이션 서버(Web Application Server, WAS)으로 들어오는 요청을 웹 서버로 위임할 수 있는 바이너리 프로토콜이다. Apache HTTP Server(이하 Apache)는 80포트로 들어오는 요청 중, 서블릿을 필요로 하는 요청은 Apache Tomcat(이하 Tomcat)에 접속하여 처리한다.

Apache와 Tomcat을 같이 사용하는 이유는 아래의 글을 참고.

Apache? Tomcat?

AJP를 사용하기 위해서는 mod_jk라는 모듈을 설치해야 한다. mod_jk는 Tomcat의 일부로 배포되지만, Apache에도 설치를 해야 한다.


요청 처리 플로우

  1. 아파치 웹서버의 httpd.conf 에 톰캣 연동을 위한 설정을 추가하고 톰캣에서 처리할 요청을 지정함.
  2. 사용자의 브라우저는 아파치 웹서버(보통 80포트)에 접속해 요청.
  3. 아파치 웹서버는 사용자의 요청이 톰캣에서 처리하도록 지정된 요청인지 확인. 요청을 톰캣에서 처리해야 하는 경우 아파치 웹서버는 톰캣의 AJP포트(보통 8009포트)에 접속해 요청을 전달.
  4. 톰캣은 아파치 웹서버로부터 요청을 받아 처리한 후, 처리 결과를 아파치 웹서버에 되돌려줌.
  5. 아파치 웹서버는 톰캣으로부터 받은 처리 결과를 사용자에게 전송.

설정파일 수정

  • workers.properties

Tomcat이 하나일 경우

1
2
3
4
5
6
7
worker.list=worker1

worker.worker1.type=ajp13

worker.worker1.host=localhost

worker.worker1.port=8009

Tomcat이 하나 이상일 경우

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
worker.list=worker1,worker2 // 이름은 임의로 설정

worker.worker1.type=ajp13

worker.worker1.host=localhost

worker.worker1.port=8009

#worker.worker1.lbfactor=1

worker.worker2.type=ajp13

worker.worker2.host=localhost

worker.worker2.port=8010 // 포트만 변경. 사용할 두번째 톰캣의 server.xml 파일을 수정해야 함.

#worker.worker2.lbfactor=2