티스토리 뷰

프록시 패턴(Proxy Pattern)이란?

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

이를 통해 객체의 속성과 변환 등을 보완하며 보안, 데이터 검증, 캐싱, 로깅에 사용한다.

프록시 객체나 프록시 서버로도 활용된다.

 

프록시 서버

서버와 클라이언트 사이에서 클라이언트가 자신을 통해 다른 네트워크 서비스에 간접적으로 접속할 수 있게 해주는 것이다.

 

프록시 서버의 장점

  • 캐싱
    클라이언트의 요청을 원격 서버가 아닌 프록시 서버에서 캐시 데이터를 응답한다.
    이는 불필요하게 외부와 연결하지 않기 때문에 트래픽을 줄일 수 있다.

 

프록시 서버의 예시

  • Nginx
    비동기 이벤트 기반의 구조와 다수의 연결을 효과적으로 처리 가능한 웹 서버이며, 주로 Node.js 서버 앞 단의 프록시 서버로 활용된다.
    이를 통해 사용자의 직접적인 서버 접근을 차단하고 간접적으로 한 단계를 더 거쳐 보안성을 더욱 강화할 수 있다.
  • CloudFlare
    전 세계적으로 분산된 서버가 있고 이를 통해 콘텐츠 전달을 빠르게 할 수 있는 CDN 서비스이다.
    또한 DDOS 공격 방어, HTTPS 구축의 장점이 있는데 이는 웹 서버 앞 단의 프록시 서버로 쓰기 때문에 가능하다.

 

CORS와 Front-End의 프록시 서버

서버가 웹 브라우저에서 리소스를 로드할 때 다른 오리진을 통해 로드하지 못하게 하는 HTTP 헤더 기반 매커니즘이다.

Front-End(이하 FE)서버에서 Back-End(이하 BE)서버와 통신할 때 CORS 에러가 발생할 수 있는데 이를 해결하기 위해 FE에서 프록시 서버를 만들기도 한다.

예를 들어 FE에서 127.0.0.1:3000으로 테스팅을 하는데 BE 서버는 127.0.0.1:12010이라면 포트 번호가 달라 CORS 에러가 발생한다.

이 때 프록시 서버를 FE 서버와 BE 서버 사이에 두어 FE 서버에서 요청되는 오리진을 127.0.0.1:12010으로 바꿔서 해결할 수 있다.

 

Reference