...
아파치 Reverse Proxy 환경 구축
Proxy는 Forward / Reverse Proxy 두가지가 있는데,
보통 Forward Proxy는 사내망 Client에서 외부에 있는 웹서버를 접근할 때 사용되며(미리 Proxy 지정이 필요함),
Reverse Proxy는 Client에서 웹서버에 접근 할 때, 내부망에 위치한 WAS서버를 대신하여 요청한 Request에 대해 Response를 하는 구조이다.
아파치와 톰캣에 리버스 프록시(reverse proxy) 환경을 구축하는 이유는 톰캣에 올린 웹 서비스의 서버 ip를 외부 사용자로부터 감추기 위한 것이며(보안), 로드밸런싱 기능으로 트래픽 분산을 하여 서버의 가용성을 유지하기 위해서 인프라를 구성하기 위해서 이다.
* Reverse Proxy에 대해 자세한 원리를 알고 싶다면 다음 포스팅을 참고 바란다.
[WEB] 🌐 Reverse Proxy / Forward Proxy 정의 & 차이 정리
프록시(Proxy) 란? 프록시 서버는 클라이언트가 자신을 통해서 다른 네트워크 서비스에 간접적으로 접속할 수 있게 해 주는 컴퓨터 시스템이나 응용 프로그램을 가리킨다. 프록시(Proxy)란 '대리'
inpa.tistory.com
아파치(Web Server)와 톰캣(WAS)의 리버스 프록시 구성으로는 아래 그림과 같이, 외부 컴퓨터에 아파치(Apache) 서버를 두고, 그 아파치가 톰캣 서버 IP를 가리키게 해서 구성하는 편이다.
물론 아파치 톰캣 자체에도 아파치(apache)의 기능이 들어있어 web server 기능을 이용할 수 있지만, 리버스 프록시(Reverse Proxy) 환경을 만들기 위해서는 내장된 아파치로는 구성이 불가능하다.
따라서 본 강의에서의 실습은 다음과 같이 진행할 예정이다.
- 내 컴퓨터에 톰캣을 설치하고
- Oracle Virtual Box에 아파치(apache) 서버를 깔아
- 아파치 서버에서 내 컴퓨터의 톰캣 서버를 가리키도록 프록시 설정 할 예정이다.
내 컴퓨터에 톰캣 설치
톰캣 구성과 설치 방법은 다음 포스팅을 참고하길 바란다.
[TOMCAT] 🐱 아파치 / 톰캣 개념 구성 & 설정 💯 정리
아파치 (Apache) 와 톰캣 (Tomcat) 아파치 (Apache) 아파치 소프트웨어 재단에서 만든 웹서버(web server)를 일컫는다. 리눅스에서는 httpd 로 명명지어져 배포된다. 정적인 데이터들 (html, css 이미지, 파일..
inpa.tistory.com
가상 머신에 아파치 (Apache) 서버 설치
아파치 구성과 설치 방법은 다음 포스팅을 참고하길 바란다.
[APACHE] 🌐 아파치 서버 초간단 설치 방법
Apache 서버 설치하기 1. 아래 링크로 들어가 아파치 서버를 설치해준다. Apache VS16 binaries and modules download www.apachelounge.com 2. 다운로드 받은 압축파일을 풀어 Apache24 폴더를 C: 드라이브..
inpa.tistory.com
아파치 프록시 설정하기
아파치 연동 방식
Apache와 tomcat(WAS)를 연동하는 방법에는 크게 3가지 옵션이 있다.
예전부터 많이 쓰던 방법은 tomcat connector(mod_jk)를 사용하는 방법이고 다른 하나는 mod_proxy를 사용하여 reverse proxy 기능을 사용하는 방법, 마지막은 mod_proxy_ajp 를 사용하여 AJP Protocol을 reverse proxy 로 사용하는 방법이다.
mod_proxy 가 mod_jk 에 비해 설정이 간편하고 AJP 같은 특정 WAS 의존적인 프로토콜을 사용하지 않으므로 성능이 더 좋다고 한다.
연결 방식 | 장점 | 단점 |
mod_jk | - Tomcat Connector를 사용하는 방식 - 가장 많이 사용해온 방식 - mod_jk 관련 자료가 많음 - JKMount 옵션을 이용하면 URL이나 컨텐츠 별로 유연한 설정 가능 |
- 별도의 모듈 설치 필요 - 설정이 어려움 - Tomcat 전용 |
mod_proxy | - Reverse Proxy 기능을 사용하는 방식 - 별도 모듈 설치를 필요로 하지 않음 - 특정 WAS에 의존적이지 않음 |
- URL에 따른 유연한 설정이 어려움 |
mod_proxy_ajp | - AJP Protocol을 Reverse Proxy로 사용하는 방식 - 별도 모듈 설치를 필요로 하지 않음 - 특정 WAS에 의존적이지 않음 |
- URL에 따른 유연한 설정이 어려움 |
AJP: Apache 웹서버가 외부 시스템과 연동하기 위한 프로토콜
mode proxy 설정
우리는 Reverse Proxy 인프라 환경을 구축할 것이기에, mod_proxy 모듈을 이용해서 구성할 예정이다.
1. /apache/conf/httpd.conf 파일을 열어 mod_proxy 모듈 활성화
httpd.conf 파일을 열고 아래 모듈의 주석을 풀어준다. (httpd.conf의 경로는 설치에 따라 다를 수 있다.)
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_http_module modules/mod_proxy_http.so
Include conf/extra/httpd-vhosts.conf
2. 그다음 /apache/conf/extra/httpd-vhost.conf 파일 열어 <VirtualHost *:80> 부분을 지우고 다음과 같이 편집해준다.
<VirtualHost *:80>
# Forward Proxy 경우 On / Reverse Proxy Off
ProxyRequests Off
# 호스트가 받은 HTTP 요청을 Proxy 요청시 사용
# Reverse 경우 On으로 해야함
ProxyPreserveHost On
# Proxy에 연결할 URL
# ServerHost:localhost -> Apache -> ProxyPass URL
ProxyPass / http://192.168.10.146:8080/service/ # 뒤에 슬래쉬는 붙여줘야함
# WAS 가 redirect HTTP 응답을 보냈을 경우 Location, Content-Location HTTP 헤더를 수정 클라이언트에 전달한다.
# reverse proxy가 이 헤더를 수정하지 않으면 클라이언트는 redirect 시 제대로 연결할 수 없으므로 꼭 설정해야 한다.
ProxyPassReverse / http://192.168.10.146:8080/service/
# 로드밸런싱 - 경로 분기
<Location /html>
ProxyPass http://192.168.10.146:8080/html/
ProxyPassReverse http://192.168.10.146:8080/html/
</Location>
<Location /user>
ProxyPass http://192.168.10.146:8080/user/
ProxyPassReverse http://192.168.10.146:8080/user/
</Location>
</VirtualHost>
3. 아파치 서버를 재시작 해준다.
C:\Apache24\bin > httpd.exe -k restart
이제 아파치 IP로 접속해보면, proxypass로 연결한 url로 로드밸런싱 될 것이다.
이 글이 좋으셨다면 구독 & 좋아요
여러분의 구독과 좋아요는
저자에게 큰 힘이 됩니다.