프록시란?
프록시 서버는 클라이언트가 자신을 통해서 다른 네트워크 서비스에 간접적으로 접속할 수 있게 해 주는 컴퓨터 시스템이나 응용 프로그램을 말한다.
프록시란 ‘대리’ 라는 의미를 가지며, 서버와 서버사이의 중계기 역할을 해 준다.
서버가 프록시에게 접근 할때는 클라이언트 처럼 작동하며, 클라이언트가 프록시에게 접근하면 서버처럼 작동을 해준다.
프록시는 프록시 서버에 요청이 된 내용을 캐시
를 이용해서 저장해 두어 중복 요청에 대해서 다시 데이터를 가져올 상황이 발생하지 않게 해줌으로서, 클라이언트에게는 빠른 속도의 서비스를 제공하고, 서버에게는 불필요한 부하를 줄이는 효과를 제공할 수 있다.
프록시의 두 종류
프록시 서버는 네트워크 상의 위치와 제공하는 데이터의 방향에 따라서 Forward Proxy
와 Reverse Proxy
로 나누어 진다.
포워드 프록시(Forward Proxy)
포워드 프록시는 일반적으로 생각하는 프록시의 유형으로, 클라이언트와 인터넷 사이에 위치해 있다.
포워드 프록시 서버는 같은 내부망에 존재하는 클라이언트의 요청을 받아서 대신 인터넷으로 요청하고, 내용을 받아와서 전달을 해주는 개념이다.
naver.com을 요청시, 포워드 프록시 서버가 해당 리소스를 대신 받아와서 클라이언트에게 제공한다.
포워드 프록시 서버의 이점
- 보안
- 내부망에 속한 인원들의 특정 컨텐츠에 대한 접근을 차단할 수 있다.
- 클라이언트의 모든 요청은 프록시를 거쳐서 인터넷으로 연결되기 때문
- 캐싱
- 어떤 웹 페이지 서버의 정보(HTML, JS, CSS, 이미지 등)를 임시보관(캐싱)해 두어서, 동일한 요청이 왔을 때, 캐싱이 된 정보를 그대로 반환하여, 서버의 부하를 줄일수 있고 프록시내 캐싱된 페이지를 불러오기 때문에 빠르게 조회할 수 있다.
- 암호화
- 클라이언트의 요청은 프록시 서버를 통과할 때 암호화 된다.
- 본 서버에서 IP를 추적해도 프록시 서버IP만 보이기 때문에 정체를 파악하기 어렵게 된다.
리버스 프록시(Reverse Proxy)
리버스 프록시는 서버와 인터넷 사이에 위치한 프록시 서버를 말한다.
클라이언트는 웹서비스에 접근할때, 웹서버에 요청하는 것이 아닌, 프록시로 요청하게 되고, 프록시 서버가 서버에서 데이터를 가져오는 방식이다.
이 구조에서 클라이언트는 프록시 뒤의 서버의 존재를 알 수 없다.
리버스 프록시 서버의 이점
- 로드 밸런싱
- 수많은 트래픽이 들어오는 서비스의 경우, 다중 서버 환경을 구축하는데, 이때 프록시는 여러 서버에 부하를 분산해주어 한 서버에 집중적인 부하가 생기는 상황을 방지할 수 있다.
- 로드 밸런싱을 사용하는 경우, 여러개의 서버중 하나의 서버에만 배포하면 서비스 중단이 없이 그대로 서비스를 이용가능하다.
- 캐싱
- 해외에 서버가 있는경우에 한국에 리버스 프록시 서버를 설치하면, 리버스 프록시 서버에 캐싱되어 있는 데이터를 이용할 수 있어서 더 빠른 성능을 보여줄수 있다.
- 서버 보안
- 서버 앞단에 프록시가 있는 경우, 서버는 외부에서 서버의 IP를 알 수 없다. 그러므로 DDos등의 공격대상으로 실제 서버를 보호 할 수 있다.
- SSL 암호화
- 서버가 클라이언트 들과 통신하면, SSL로 암호화 할 경우 비용이 많이 든다.
- 리버스 프록시를 사용하면 들어오는 요청을 모두 복호화하고, 나가는 응답을 암호화 해주므로 본래 서버의 부담을 줄여줄 수 있다.
정리
- 프록시는
Forward Proxy
서버와Reverse Proxy
로 나뉜다. - 캐시를 통해서 서버는 부하를 줄이고, 클라이언트는 빠른 응답을 받을수 있다.
Forward Proxy
: 클라이언트와 인터넷 사이에 위치, 클라이언트의 IP를 숨겨준다.Reverse Proxy
: 서버와 인터넷 사이에 위치, 서버의 IP를 숨겨준다.
Reference
https://hudi.blog/forward-proxy-reverse-proxy/
https://inpa.tistory.com/entry/NETWORK-📡-Reverse-Proxy-Forward-Proxy-정의-차이-정리?category=889117