개발/Proxy
CSAPP : 웹서버 만들기(Week07) - Proxy 개념
coldlee
2022. 5. 26. 22:41
프록시(Proxy)
1. 프록시(proxy)란 무엇인가?
프록시 : 서버와 클라이언트 사이에 중계기로서 대리로 통신을 수행하는 것
프록시 서버 : 그 중계 기능을 하는 것
- 클라이언트와 서버 사이에 위치해 중계기로서 통신을 수행하는 역할
- 클라이언트가 직접적으로 end server와 연결하여 리소스를 얻는 게 아니라 프록시라는 중간 경로를 통해 통신 수행
- 프록시는 클라이언트로부터 받은 요청을 end server에게 보내 응답을 받은 뒤, 해당 응답을 클라이언트에게 보낸다.
- 프록시 종류
- Forward proxy
- Reverse proxy
2. Forward proxy
- 보통 우리가 부르는 proxy : forward proxy.
- 클라이언트가 서버로 요청할 때, 직접 요청하지 않고 먼저 프록시 서버를 통해 요청하는 방식
- Foward proxy 특징
- 클라이언트가 요청한 내용을 캐싱(caching)해준다.
- 캐싱(caching) : 이전에 요청해서 얻은 리소스를 저장해놓고서 추후 다시 서버로 요청하지 않고도 해당 리소스를 얻는 방식
- 이렇게 하면 전송 시간을 절약할 수 있고 불필요한 외부 전송을 하지 않아도 되며 서버 입장에서는 외부 요청이 줄어들어 네트워크 병목 현상을 방지할 수 있다.
- 클라이언트가 누구인지 end server에게 감추는 익명성을 보장할 수 있다.
- 실제로는 클라이언트가 요청을 보냈으나 end server 입장에서는 마치 proxy가 요청한 것처럼 요청을 한 대상에 대한 정보를 proxy 정보라고 인식하게 할 수 있다.
- 클라이언트가 요청한 내용을 캐싱(caching)해준다.
3. Reverse Proxy
- Reverse proxy는 클라이언트가 서버를 호출할 때 reverse proxy를 호출하게 되고 proxy server가 end server를 요청하고 받은 응답을 클라이언트에게 전달하는 방식
- Reverse proxy 특징:
- 클라이언트 요청 내용 캐싱(Forward와 동일)
- 서버 정보를 클라이언트로부터 숨겨 보안성 제공
- 클라이언트는 reverse proxy를 실제 서버라고 생각해 요청을 보내기 때문에 실제 서버의 IP가 클라이언트에게 노출되지 않는다
- Load Balancing 기능 제공
- Load Balancing : 클라이언트 요청으로부터 서버 측에 쌓이는 부하를 분산시켜주는 기능
- 하나의 인터넷 서비스에 발생하는 트래픽이 많을 때, 서버의 로드율 증가, 부하량, 속도 저하 등을 고려하여 여러 대의 서버들이 적절히 분산처리해 해결해주는 것
참고 사이트:
정글사관학교 51일차 TIL: 프록시, mmap()과 malloc() 차이 정리
https://sunset-asparagus-5c5.notion.site/Webproxy-1f91d8247c604bce9262bc0209053d16