프록시(Proxy)
프록시
프록시의 사전적 의미는 대리, 대리권을 의미한다.
이와 마찬가지로 프록시 서버는 원 서버를 대리하여 통신하며 캐시, 로드밸런서, 보안 등 중계 역할을 하는 서버를 일컷는다.
프록시를 쓰는 이유는 보안상의 이유로 직접 통신할 수 없는 두 점 사이에서 프록시 서버가 대리로 통신을 수행하며 보안성, 성능, 안정성을 향상 시키기 위해서이다.
프록시 서버는 서버와 클라이언트 중간에 위치하기 때문에 클라이언트는 프록시 서버를 '서버'라고 인식하고, 서버는 프록시 서버를 '클라이언트'로 인식한다.
이러한 구조상 프록시 서버는 어디에 위치하느냐에 따라 포워드 프록시 혹은 리버스 프록시로 나뉜다.
포워드 프록시(Forward Proxy)
일반적인 프록시 서버는 포워드 프록시를 말하며 이는 클라이언트-서버 구조에서 클라이언트 쪽을 대리한다.
같은 내부망에 존재하는 클라이언트의 요청을 받아 인터넷을 통해 외부 서버의 데이터를 가져온 뒤 클라이언트에게 응답해주는 역할이다.
즉, 클라이언트가 서버에 접근하고자 할 때, 클라이언트는 타겟 서버의 주소를 포워드 프록시에 전달하고, 포워드 프록시는 전달받은 주소를 가지고 인터넷을 통해 요청된 내용을 해당 서버에서 가져온다.
포워드 프록시의 장점
1. 클라이언트 보안
보통 정부, 공공기관, 기업 등과 같은 기관은 해당 기관에 속한 사람들의 제한적인 인터넷 사용을 위해 방화벽을 사용한다.
이 때 포워드 프록시 서버는 방화벽과 같은 개념으로 제한을 위해 사용된다.
해당 기관에 속한 사람들이 그들이 방문하고자 하는 웹사이트에 직접적으로 방문하는 것을 방지할 수 있고, 포워드 프록시 서버에 룰을 추가해 특정 사이트에 접속하는 것을 막을 수도 있다.
2. 캐싱 (Caching)
사용자가 어떤 웹 페이지에 접근 시 프록시 서버는 해당 페이지 서버의 정보를 캐싱(임시보관)해둔다.
그래서 똑같이 해당 페이지에 접근하거나, 다른 클라이언트가 해당 페이지를 요청할 때, 캐시된 정보(페이지)를 그대로 반환할 수 있고, 이는 서버의 부하를 줄이는 효과도 낼 수 있다.
3. 암호화(Encryption)
클라이언트의 요청은 포워드 프록시 서버를 통과할 때 암호화 된다.
암호화된 요청은 다른 서버를 통과할 때 필요한 최소한의 정보만 갖게 되고, 이는 클라이언트의 IP를 감춰주는 보안 효과를 내준다.
따라서 본 서버에서 IP 주소를 역추적해도 포워드 프록시 서버를 사용하면 포워드 프록시 서버의 IP만 보이기 때문에 정체를 파악하기 어렵다.
리버스 프록시 (Reverse Proxy)
리버스 프록시는 포워드 프록시와 반대의 개념으로, 애플리케이션 서버의 앞에 위치한다.
클라이언트가 서비스에 접근할 때 서버에 요청을 하는 것이 아닌, 프록시로 요청하고, 프록시가 서버로부터 응답을 전달받아 다시 클라이언트에게 전송하는 역할을 한다.
리버스 프록시의 장점
1. 로드 밸런싱 (Load Balancing)
대량의 트래픽이 발생하는 서비스는 하나의 싱글 서버로 감당해 내기 어렵다.
하지만 리버스 프록시 서버를 여러개의 본 서버들 앞에 두면 특정 서버가 과부화 되지 않게 로드밸런싱이 가능하다.
2. 서버 보안 (Security)
서버 측 보안에 용이하다.
리버스 프록시를 사용하면 본래 서버의 IP 주소를 노출시키지 않을 수 있고, 해커들의 DDoS 공격과 같은 공격을 막는데 유용하다.
3. 암호화 (Encryption)
SSL 암호화에도 좋다.
본래 서버가 클라이언트들과 통신을 할 때 SSL(or TSL)로 암호화, 복호화를 할 경우 비용이 많이 들었지만,
리버스 프록시를 사용하면 들어오는 요청을 모두 복호화하고 나가는 응답을 암호화 해주어 클라이언트와 안전한 통신을 하며 본래 서버의 부담을 줄여줄 수 있다.
프록시 서버를 사용하는 목적
이러한 프록시 서버를 사용하는 목적은 다음 상황에 따라 다를 수 있다.
1. 프록시 서버 위치
- Forward Proxy - 클라이언트 앞
- Reverse Proxy - 웹서버/WAS 앞
2. 프록시 서버 통신 대상
- Forward Proxy - 클라이언트와 Proxy 서버가 통신하여 인터넷을 통해 외부 데이터 수신
- Reverse Proxy - Proxy 서버와 내부망서버가 통신하여 인터넷을 통해 오는 요청을 Proxy서버가 받은 후 응답
3. 감춰지는 대상
- Forward Proxy - 클라이언트가 서버에 요청을 할 때 포워드 프록시 서버를 호출하고 프록시가 서버에 요청을 보내게 되어 서버에게 클라이언트가 누구인지 감출 수 있음
- Reverse Proxy - 리버스 프록시는 클라이언트가 서버에게 요청을 할 때 프록시 서버의 url로만 접근이 가능하기 때문에 본서버의 IP 정보를 숨길 수 있음