Forward Proxy & Reverse Proxy
포워드 프록시와 리버스 프록시 개념
Forward Proxy
클라이언트가 example.com 에 연결하려고 하면 사용자 PC 가 직접 연결하는게 아니라 포워드 프록시 서버가 요청을 받아서 example.com 에 연결하여 그 결과를 클라이언트에 전달(forward) 해 준다.
포워드 프록시는 대개 캐시 기능이 있으므로 자주 사용되는 컨텐츠라면 월등한 성능 향상을 가져올 수 있으며 정해진 사이트만 연결하게 설정하는 등 웹 사용 환경을 제한할수 있으므로 기업 환경등에서 많이 사용한다.
Reverse Proxy
클라이언트가 example.com 웹 서비스에 데이타를 요청하면 Reverse Proxy는 이 요청을 받아서 내부 서버에서 데이타를 받은 후에 이 데이타를 클라이언트에 전달하게 된다.
내부 서버가 직접 서비스를 제공해도 되지만 이렇게 구성하는 이유 중 하나는 보안 때문이다.
보통 기업의 네트워크 환경은 DMZ 라고 하는 내부 네트워크와 외부 네트워크 사이에 위치하는 구간이 존재하며 이 구간에는 메일 서버, 웹 서버, FTP 서버등 외부 서비스를 제공하는 서버가 위치하게 된다. example.com 사는 서비스를 자바로 구현해서 WAS 를 DMZ 에 놓고 서비스해도 되지만 WAS 는 보통 DB 서버와 연결되므로 WAS 가 최전방에 있으면 WAS 가 털릴 경우 DB 서버까지 같이 털리는 심각한 문제가 발생할 수 있다.
이 때문에 리버스 프락시 서버를 두고 실제 서비스 서버는 내부망에 위치시키고 프락시 서버만 내부에 있는 서비스 서버와 통신해서 결과를 클라이언트에게 제공하는 방식으로 서비스를 하게 된다.
특히 리눅스 환경이라면 리버스 프락시로 아파치 웹 서버를 사용한다면 SELinux 를 켜 놓으면 SELinux 의 기본 정책이 웹 서버는 톰캣의 8080, 8009 포트만 접근 할 수 있으므로 아파치 웹 서버가 해킹당해도 웹 서버 권한으로는 내부망으로 연결이 불가하다. 또한 리버시 프락시를 cluster로 구성해 놓으면 가용성을 높일 수 있고 사용자가 증가하는 상황에 맞게 Web Server 나 WAS 를 유연하게 늘릴 수 있는 장점이 있다.
**
Reverse Proxy 로 서비스 제공시 WAS 에서 REMOTE_ADDR 을 가져오면 Reverse Proxy 서버의 IP 를 얻게 되므로 원하는 결과가 나오지 않는다.
Proxy(프락시) 환경에서 client IP 를 얻기 위한 X-Forwarded-For(XFF) http header 를 참고해서 XFF 헤더를 사용하자.
출처 : www.lesstif.com/system-admin/forward-proxy-reverse-proxy-21430345.html
프록시와 리버스 프록시의 가장 쉬운 접근 방법은
망 내에서 외부로의 서비스 이용은 (포워드) 프록시
망 밖에서 내부로의 서비스 이용은 리버스 프록시
가 되겠다.
포워드 프록시는 망 내의 이용자(또는 시스템)가 외부 서비스 위치 등을 모르고 이용하고
리버스 프록시는 망 밖의 이용자(또는 시스템)가 내부 서비스 위치 등을 모르고 이용하게 된다.
'IT-Architect, Architecture' 카테고리의 다른 글
아파치 로드밸런싱으로 여러 WAS 운영하기 (0) | 2020.11.01 |
---|---|
Domain, DAO, DTO, VO, CRUD 알고싶다 (0) | 2020.05.04 |
SOA 실현의 핵심, ESB (0) | 2020.05.04 |
댓글