티스토리 뷰
728x90
1. 프록시 서버란?
프록시 서버(Proxy Server)는 클라이언트와 서버 사이에 위치하며, 클라이언트의 요청을 대신 처리하거나, 서버의 응답을 중계하는 중간 서버입니다. 클라이언트는 프록시를 통해서만 서버에 접근할 수 있으며, 서버 역시 프록시를 통해 클라이언트에 응답을 전달합니다.
프록시 서버의 주요 기능
- 보안: 클라이언트와 서버 간 직접 연결을 차단하여 보안을 강화합니다.
- 캐싱: 자주 사용하는 데이터를 캐싱하여 요청 처리 속도를 높입니다.
- IP 숨김: 클라이언트의 IP를 숨기고 대신 프록시의 IP를 사용합니다.
- 접근 제어: 특정 웹사이트에 대한 접근을 차단하거나, 필터링합니다.
- 로드 밸런싱: 여러 서버로 트래픽을 분산시켜 시스템의 부하를 줄입니다.
2. 포워드 프록시(Forward Proxy)
포워드 프록시는 클라이언트가 특정 서버에 요청을 보낼 때, 클라이언트 대신 요청을 전달하고 응답을 받아 다시 클라이언트에게 전달하는 역할을 합니다.
특징
- 클라이언트의 요청을 중계합니다.
- 클라이언트는 프록시 서버를 직접 설정해야 합니다.
- 클라이언트의 IP를 숨길 수 있습니다.
포워드 프록시의 사용 사례
- IP 차단 우회: 회사나 학교에서 특정 사이트에 대한 접근이 제한된 경우, 프록시를 사용하여 우회할 수 있습니다.
- 콘텐츠 필터링: 기업에서는 포워드 프록시를 사용해 직원들의 특정 웹사이트 접근을 제한할 수 있습니다.
- 보안 강화: 클라이언트 IP를 숨겨 서버와의 직접 연결을 방지합니다.
포워드 프록시 동작 과정
- 클라이언트가 프록시 서버에 요청을 보냅니다.
- 프록시 서버가 클라이언트 대신 원 서버에 요청을 보냅니다.
- 원 서버가 응답을 프록시 서버로 보내고, 프록시 서버는 이를 클라이언트에 전달합니다.
구조도
클라이언트 -> 포워드 프록시 -> 원 서버
3. 리버스 프록시(Reverse Proxy)
리버스 프록시는 클라이언트의 요청을 받아 실제 서버로 전달하고, 서버의 응답을 다시 클라이언트로 전달하는 역할을 합니다. 리버스 프록시는 주로 서버 측에 배치됩니다.
특징
- 서버를 보호하고, 클라이언트는 실제 서버와 직접 연결되지 않습니다.
- 서버의 IP를 숨기고, 프록시 서버의 IP만 노출됩니다.
- 요청을 적절히 분산 처리하여 로드 밸런싱을 수행할 수 있습니다.
리버스 프록시의 사용 사례
- 로드 밸런싱: 여러 서버로 트래픽을 분산시켜 부하를 줄이고 성능을 개선합니다.
- 보안 강화: 서버의 IP 주소를 숨기고, 프록시 서버가 방화벽 역할을 합니다.
- SSL 종료: SSL 인증서를 프록시 서버에서 처리하여 백엔드 서버의 부담을 줄입니다.
리버스 프록시 동작 과정
- 클라이언트가 리버스 프록시 서버에 요청을 보냅니다.
- 리버스 프록시 서버가 적절한 백엔드 서버에 요청을 전달합니다.
- 백엔드 서버가 리버스 프록시에 응답을 보내고, 리버스 프록시가 이를 클라이언트에 전달합니다.
구조도
클라이언트 -> 리버스 프록시 -> 백엔드 서버
4. 포워드 프록시와 리버스 프록시의 차이
구분포워드 프록시리버스 프록시
위치 | 클라이언트 측 | 서버 측 |
목적 | 클라이언트의 요청을 서버에 전달 | 클라이언트의 요청을 백엔드 서버에 전달 |
IP 숨김 | 클라이언트의 IP를 숨김 | 서버의 IP를 숨김 |
사용 사례 | 접근 제어, IP 우회, 보안 | 로드 밸런싱, SSL 종료, 보안 강화 |
5. 프록시 서버의 한계와 대안
프록시 서버는 매우 유용하지만 한계도 있습니다.
- 속도 저하: 추가적인 네트워크 홉이 생기므로 요청/응답 시간이 증가할 수 있습니다.
- 단일 장애점: 프록시 서버에 장애가 발생하면 전체 시스템이 중단될 수 있습니다.
대안 기술
- CDN(Content Delivery Network): 캐싱과 로드 밸런싱을 제공하며 전 세계적으로 콘텐츠를 빠르게 전달합니다.
- API 게이트웨이: 마이크로서비스 아키텍처에서 요청 라우팅, 인증, 모니터링 기능을 제공합니다.
728x90
250x250
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 혼공단
- 운영체제
- 공룡책
- 백엔드 개발
- 개발일지
- 백준
- 혼공단 SQL
- Linux
- MySQL
- nodejs
- 혼공단 9기
- 스페인
- Process
- 깃 예제
- 혼공학습단
- googleapis
- JS
- 자바스크립트
- 해커톤
- 스페인 교환학생
- C++
- Signal
- AWS
- SQL
- 리눅스
- 개발
- 교환학생
- 프로젝트
- JavaScript
- 혼공
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
글 보관함