Skip to content

Latest commit

 

History

History
35 lines (26 loc) · 2.58 KB

proxy.md

File metadata and controls

35 lines (26 loc) · 2.58 KB

프록시 패턴(proxy pattern)

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

  • 객체의 속성, 변환 등을 보완하며 보안, 데이터 검증, 캐싱, 로깅에 사용한다.
  • 프록시 객체로 쓰이기도 하지만 프록시 서버로도 활용된다.

프록시 서버에서의 캐싱

  • 캐시 안에 정보를 담아두고, 캐시 안에 있는 정보를 요구하는 요청에 대해 원격 서버에 요청하지 않고 캐시 안에 있는 데이터를 활용하는 것을 말한다. 불필요하게 외부와 연결하지 않기 때문에 트래픽을 줄일 수 있다는 장점이 있다.

프록시 서버

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

  • 프록시 서버로 쓰는 nginx

    • nginx는 비동기 이벤트 기반의 구조와 다수의 연결을 효과적으로 처리 가능한 웹 서버이다.
    • 주로 Node.js 서버 앞단의 프록시 서버로 활용된다.
    • Nods.js의 버퍼 오버플로우 취약점을 예방하기 위해 nginx를 프록시 서버로 앞단에 놓고 Node.js를 뒤쪽에 놓는 것이 좋다고 한다. (Node.js 창시자 라이언 달)
      • 이를 통해, 익명 사용자의 직접적인 서버로의 접근을 차단하고, 간접적으로 한 단계를 더 거침으로써 보안성을 더 강화할 수 있다.
  • CORS와 프런트엔드의 프록시 서버

    • CORS(Cross-Origin Resource Sharing)
      • 서버가 웹 브라우저에서 리소스를 로드할 때 다른 오리진을 통해 로드하지 못하게 하는 HTTP 헤더 기반 메커니즘
    • 프론트 개발 시, 프론트 서버를 만들어 백엔드 서버와 통신할 때 주로 CORS 에러를 마주치는데, 이를 해결하기 위해 프론트에서 프록시 서버를 만들기도 한다.
    • 오리진

    예를 들어, 프론트에선 127.0.0.1:3000으로 테스팅을 하는데, 백엔드 서버는 127.0.0.1.5000이라면 포트 번호가 다르기 때문에 CORS 에러가 나타난다. 이때, 프록시 서버를 둬서 프론트 서버에서 요청되는 오리진을 127.0.0.1.:5000으로 바꾸는 것이다.