들어가며
Proxy의 사전적 정의는 '대리인'이다라는 뜻이다. 사실 Proxy란 단어는 인터넷을 하면서 오며가며 들었던 단어지만 누군가 Proxy가 뭐라고 물어보면 쉽게 대답하지 못했다. 필자가 처음으로 Proxy 기술을 사용 했을 때는 부트캠프였다. Web Server에 들어온 요청을 WAS로 던져줄 때 Nginx의 Reverse Proxy 사용 하였는데 그때 그거에 대해서 생각을 안해보고 지나갔었다. 그리고 이번 CS 스터디를 하면서 다시 한번 Proxy를 만나게 되었다.
이번 글에서는 Proxy란 뭔지, 그리고 Nginx에서 썼던 기능이 Proxy면 Proxy지 왜 Reverse Proxy 인지 한번 알아보겠다.
Proxy 구조
Proxy의 구조를 보게되면 클라이언트의 앞단 또는 서버의 앞단에 Proxy 서버를 두고 운영 하는것을 볼 수 있다. 이때 Client 앞단에 proxy가 있으면 forward proxy, 서버의 앞단에 있으면 reverse proxy라고 한다. 부트캠프에서 프로젝트를 했을 당시, WAS의 앞단에 Nginx를 통해 client의 요청을 받았기 때문에 WAS 기준으로 nginx가 reverse proxy 서버라고 볼 수 있다. 보통 forward proxy는 forward를 생략 하고 proxy라고 부른다.
구조를 보면 대략적으로 어떤 기능이 가능할 지 유추 할 수 있다. Proxy의 대표적인 특징 어떤게 있는지 살펴보자.
Proxy의 주요 기능
Forward편
1. 익명성 제공(우회)
클라이언트의 ip가 10.10.10.10 이고 proxy서버의 ip가 20.20.20.20 그리고 최종서버의 ip가 30.30.30.30이라고 가정하자. 클라이언트가 proxy 서버를 거치지 않고 바로 연결을 하게 되면 packet에 요청지의 ip가 있기 때문에 서버는 10.10.10.10에서 왔다고 생각한다. 그러나 proxy 서버를 거치게 되면 요청은 10.10.10.10에서 요청했지만 서버 입장에서는 20.20.20.20이 요청을 했다고 생각한다. 만일 proxy 서버가 일본 주소라고 하면 서버는 이 요청이 일본에서 왔다고 생각할 것이다.
2. 캐싱
CS를 공부를 하면서 느끼는거지만, 공유기, L2 스위치처럼 무언가 중간에 있는 기기들은 자주 요청하는 정보에 대해 캐싱 기능을 제공한다. proxy서버도 마찬가지다. 자주 요청되는 데이터를 서버에 저장하여 동일한 요청이 발생할 때 빠르게 응답한다.
3. 웹 필터링
구조 사진을 보게 됐을 때 가장 먼저 생각한 기능이다. 클라이언트의 모든 요청은 proxy 서버를 거쳐서 요청이 가기 때문에 만일 클라이언트가 이상한 사이트에 접속을 하려고 했을 때 접속을 차단할 수가 있다.
4. 트래픽 모니터링
웹 필터링과 종이 한장 차이다. 만일 행위를 막으면 웹필터링, 행위를 방관하면서 그것을 로깅하면 모니터링이 된다. 사실 사내에서 proxy를 구성하게 되면 웹필터링과 트래픽 모니터링 이 두가지가 가장 큰 이유가 아닐까 추측된다.
Reverse편
1. 부하분산 Load Balance
보통 서버들은 Scale out을 통해 여러 서버를 가지고 있는 Reverse proxy는 서버의 앞단에서 몰려오는 트래픽을 분산할 수 있다.
2. 공격으로부터 보호
Reverse proxy를 사용하게 되면 서버의 ip가 노출되지 않기 때문에 DDOS 공격과 같은 표적 공격으로부터 서버를 보호 할 수 있다. 사실 부트캠프 프로젝트 때 1, 2번 때문에 Nginx의 Reverse proxy 기능을 사용 하였다. 그리고 forward 처럼 특정 클라이언트의 ip를 차단 할 수도 있다.
3. SSL암호화
PKI 시스템 상 암호화 / 복호화 하는 것이 서버에 큰 부담을 주게 되지만 proxy 서버가 이것을 대신해 줘서 서버의 리소스를 확보 할 수 있다.
출처
https://www.cloudflare.com/ko-kr/learning/cdn/glossary/reverse-proxy
'CS > 네트워크' 카테고리의 다른 글
RESTful API에 대해서 (0) | 2024.07.18 |
---|---|
HTTP의 역사 (0) | 2024.07.15 |
L2, L3, L4, L7 스위치 feat. 스위치, 로드밸런싱 #2 (0) | 2024.07.15 |
L2, L3, L4, L7 스위치 feat. 스위치 #1 (1) | 2024.07.15 |
주소창에 google.com을 입력한다면? feat. DNS (0) | 2024.07.15 |