프록시 패턴

박상준·2022년 9월 1일
0

면접지식

목록 보기
22/32

프록시 패턴

대상 객체(Subject)에 접근하기 전 그 접근에 대한 흐름을 가로채 대상 객체 앞단의 인터페이스 역할을 하는 디자인 패턴이다.

이를 통해 객체의 속성, 변환 등을 보완하며 보안, 데이터 검증, 캐싱, 로깅에 주로 사용합니다. 대표적으로 프록시 서버가 있다.

프록시 서버
서버와 클라이언트 사이에서 클라이언트가 자신을 통해 다른 네트워크 서비스에 간접적으로 접속할 수 있게 해주는 컴퓨터 시스템이나 응용 프로그램을 가리킨다.

프록시 서버로 사용하는 CloudFlare

전 세계적으로 분산된 서버가 있고 이를 통해 어떠한 시스템의 콘텐츠 전달을 빠르게 할 수 있는 CDN 서비스이다.

CDN : Contents delivery network

다음 그림 처럼 사용자, 크롤러, 공격자가 자신의 웹 사이트에 접속하게 되는 데, 이 때 CloudFlare를 통해 공격자로부터 보호할 수 있다.

CORS와 프론트엔드의 프록시 서버

CORS (Cross-Origin Resource Sharing)는 서버가 웹 브라우저에서 리소스를 로드할 때 다른 오리진을 통해 로드하지 못하게 하는 HTTP 헤더 기반 메커니즘이다.

프론트엔드 개발 시 프론트엔드 서버를 만들어서 백엔드 서버와 통신 시 주로 CORS 에러를 마주친다. 이를 해결하기 위해 프론트엔드에서 프록시 서버를 만들기도 한다.

오리진

프로토콜과 호스트 이름, 포트의 조합.예를 들어
https://qkrtkdwns3410.com:8080/test 라는 주소에서 오리진은
https://qkrtkdwns3410.com:8080 을 의미한다.

예를 들어
프론트엔드에서 127.0.0.1:3000 으로 테스팅

백엔드의 경우 127.0.0.1:8080 이라면 포트 번호가 다르기 때문에 CORS 에러가 나타난다.

이때 프록시 서버를 둠으로서 프론트 엔드 서버에서 요청되는 오리진을
127.0.0.1:8080 으로 바꾸는 것이다.

다음 그림에서 프론트엔드 서버 앞단에 프록시 서버를 놓아 /api 요청은 users API, /api2 요청은 users API2에 요청가능하다.

자연스럽게 CORS 에러 해결 + 다양한 API서버와 통신도 매끄럽게 가능해진다.

profile
이전 블로그 : https://oth3410.tistory.com/

0개의 댓글