일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 |
- extension
- three.js
- cloudfront
- 구글 이미지 다운
- Chrome Extension
- chrome extension typescript boiler plate
- 2024년회고
- Google Image Crawler Chrome Extension
- react-mocking
- 로또 몰카
- 디지몬상테스트
- 개발자
- 프로젝트
- 로또 몰래카메라
- 네이버 로또
- 리액트네이티브
- React
- 프론트 개발자
- 2024년 개발자회고
- 토이프로젝트
- 어플
- 리액트
- Google Image Crawler
- 사이드 프로젝트
- ReactNative
- 프론트엔드
- 똥피하기
- 나락퀴즈
- react-three-fiber
- react mociking
- Today
- Total
개발 블로그
프록시(Proxy) 서버란? Forward Proxy, Reverse Proxy, 로드밸런서 본문
프록시 서버는 클라이언트와 서버가 통신할 때, 중간에 위치한 서버이다. 그림으로 그려보았다.
그림과 같이 클라이언트가 바로 서버로 요청을 가지 않고, 프록시 서버를 통해서 서버에게 요청을 하게된다.
서버측 또한 마찬가지로 응답 값을 클라이언트에게 바로 주지 않고 프록시 서버로 응답 값을 전해주면,
프록시 서버가 각 클라이언트들에게 응답 값을 주게 된다.
그렇다면 왜 프록시 서버를 사용하는 걸까?
- 프록시 서버는 서버로 부터 받은 응답값을 기억, 즉 캐싱해서 같은 요청이 왔을 때, 서버에게 요청 없이 응답값을 바로 반환해 줄 수 있다.
예를 들어, 클라이언트 측에서 커피 아이콘을 요청하면, 첫 요청이 들어왔을때, 서버에게 직접적인 요청을 프록시서버가 하고, 두번째 부터는 아래 이미지와 같이 프록시 서버가 커피 아이콘 요청에 대한 응답값을 기억하고 있다가 클라이언트 측에서 해당 요청이 들어오면 바로 바로 커피아이콘 응답값을 보내줄 수가 있다. 이렇게 되면 네트워크로의 요청이 줄어들게 되어서 네트워크 성능에서 이점을 얻게 된다.
- 데이터를 중간에서 바꿀 수 있다. 클라이언트측에서 프록시 서버로 요청을 전달하게 되고, 프록시 서버가 서버로 클라이언트에서 받은 요청 정보를 모두 빠짐없이 보낼 수도 있지만, 요청 정보를 변경시켜서 서버로 보낼 수가 있다. 서버에서 응답값을 보낼때도 마찬가지이다.
서버로 부터 받은 응답 값을 클라이언트로 그대로 보낼 수도 있지만 응답 정보를 변경시켜서 클라이언트에게 전달할 수도 있다.
그렇다면 이게 실제로 어떤식으로 사용될까? 흔히 말하는 "ip를 우회해서 어떤 웹사이트에 접근했다." 이런 경우가 해당 한다.
클라이언트에서 웹서버로 직접적인 요청을 하게 되면, 클라이언트의 ip 주소가 무조건적으로 서버에게 전달되게 된다.
하지만 프록시 서버가 중간에 있게 되면, 서버로 부터 요청 정보를 보낼 때, ip 주소나 브라우저 정보등을 변경하여서 요청을 보낼 수 있다.
프록시 서버의 종류는 두가지가 있다.
Forward Proxy, Reverse Proxy
인터넷을 기준으로 앞에 있으면 Forward Proxy, 뒤에 있으면 Reverse Proxy 이다.
물론 두가지 종류 다 위에서 말한 모든 특징이 다 들어가 있다!
그 중 Reverse Proxy Server 의 위치에서 많이 나오는 개념이 있다.
바로 로드 밸런서이다.
로드 밸런서는 Reverse Proxy Server 의 자리에 위치하고 있으며,
서버의 부하를 분산시켜주는 역할을 한다.
예를 들어 보겠다.
로드 밸런서 없이 다이렉트로 클라이언트에서 서버 한대로 수많은 요청이 가게 되면 서버는 부하가 많이 생기게 된다.
이 때 서버의 사양을 늘려서 ( Scale up ) 부하를 해결할 수도 있다. 하지만 이것 또한 한계가 있다.
두번째 방법으로는 Reverse Proxy Server 를 두고, 요청을 여러개의 서버들에게 분산시켜서 처리하게 하는 방법이 있다. 이 개념이 바로 로드밸런싱이다.
P.S
우리 회사 서버도 로드밸런싱이 되어 있다. 두개로 분산되어 있는데.. 배포를 할 때는 각각 서버에 들어가서 배포해주어야 한다.
아마 모든 회사의 서버가 로드밸런싱 처리가 되어 있지 않을까..? 생각한다.
'웹' 카테고리의 다른 글
DNS 란? DNS 뜻 쉽게 설명하기 (4) | 2023.12.03 |
---|---|
CDN (Content Delivery Network) 이란? (0) | 2023.11.30 |
동기, 비동기, 블로킹, 논블로킹 가장 명확하고 쉽게 정리해보자 (2) | 2023.11.28 |
git 프로젝트 세팅 방법 및 실무에서 사용하는 명령어 정리, vscode 확장프로그램 추천 (2) | 2023.11.26 |
로그인 - 세션 vs JWT (2) | 2023.02.21 |