Proxy 서버란?
- 클라이언트가 자신을 통해서 다른 네트워크 서비스에 간접적으로 접속할 수 있게 해 주는 컴퓨터 시스템이나 응용 프로그램
- 프록시 서버는 프록시 서버의 위치나 요청 처리 방식에 따라 Forward Proxy, Reverse Proxy로 구분됨
Forward Proxy
- 클라이언트가 애플리케이션 서버에 직접 요청을 전달
- 프록시 서버는 해당 클라이언트의 요청을 전달받아서 애플리케이션에 포워딩
- 클라이언트는 내부망에서 프록시 서버를 경유하여 인터넷 통신이 가능
장점
클라이언트 보안 (Security)
- 공공기관 및 기업에 속한 사람들의 제한적인 인터넷 사용을 위해 방화벽을 사용
- 포워드 프록시 서버는 방화벽과 같은 개념으로 제한을 위해 사용
- 즉, 해당 기관에 속한 사람들이 그들이 방문하고자 하는 웹사이트에 직접적으로(directly) 방문하는 것을 방지 → 포워드 프록시 서버에 룰을 추가해서 특정 사이트에 접속 차단 가능
캐싱 (Caching)
- 웹페이지 접근 시, 프록시 서버는 해당 페이지 서버의 정보를 캐싱(임시보관)
- 똑같이 해당 페이지에 접근하거나, 다른 클라이언트가 해당 페이지를 요청할 때 , 캐시된 정보(페이지)를 그대로 반환할 수 있고, 이는 서버의 부하를 줄이는 효과
암호화 (Encryption)
- 클라이언트의 요청은 포워드 프록시 서버를 통과할 때 암호화
- 암호화된 요청은 다른 서버를 통과할 때 필요한 최소한의 정보만 갖게 되는데, 이는 클라이언트의 ip 를 (보안을 위해) 감춰주는 보안 효과
Reverse Proxy
- 클라이언트가 프록시 서버의 주소로 요청을 전달
- 프록시 서버는 해당 요청을 등록된 웹 서비스로 라우팅
- 프록시 서버의 엔드포인트는 인터넷에 노출되며 대신 내부 웹 서비스는 인터넷에 노출되지 않음
- 내부 웹 서비스의 주소가 노출되지 않으며 중앙에서 서비스에 대한 로드 밸런싱 관리 가능
장점
로드 밸런싱 (Load Balancing)
- 리버스 프록시 서버를 여러개의 본 서버들 앞에 둠으로써 특정 서버가 과부화 되지 않게 로드밸런싱이 가능
서버 보안 (Security)
- 리버스 프록시를 사용하면 본래 서버의 IP 주소를 노출을 방지 → 해커들의 DDoS 공격과 같은 공격을 막는데 유용
캐싱 (Caching)
- 포워드 프록시의 캐싱과 비슷한 기능 수행 (정확히 프록시의 본래 기능)
암호화 (Encryption)
- SSL 암호화 측면에서 용이 → 서버가 클라이언트들과 통신을 할때 SSL(or TSL)로 암호화, 복호화를 할 경우 비용이 많이 발생
- 리버스 프록시를 사용하면 들어오는 요청을 모두 복호화하고 나가는 응답을 암호화해주므로 클라이언트와 안전한 통신을 할수 있으며 본래 서버의 부담을 줄여줄 수 있음 (TLS Termination)
차이점
프록시 서버 위치
- Forward Proxy 서버는 클라이언트 앞에 구성
- Reverse Proxy 서버는 웹서버/WAS 앞에 구성
프록시 서버 통신 대상
- Forward Proxy는 내부망에서 클라이언트와 Proxy 서버가 통신하여 인터넷을 통해 외부에서 데이터를 가져옴
- Reverse Proxy는 내부망에서 Proxy 서버와 내부망 서버가 통신하여 인터넷을 통해 요청이 들어오면 Proxy 서버가 받아 응답
감춰지는 대상
- Forward Proxy는 클라이언트의 주소를 감칠 수 있음
- Reverse Proxy는 본서버의 IP 정보를 숨길 수 있음
참고 링크
https://en.wikipedia.org/wiki/Proxy_server
https://www.theserverside.com/feature/Forward-proxy-vs-reverse-proxy-Whats-the-difference