프록시(Proxy)

Fox·2024년 10월 22일
0
post-thumbnail

프록시(Proxy)란?

프록시(Proxy) 는 "대리"의 의미로, 클라이언트와 서버 간의 중개자 역할을 수행하는 서버이다.
클라이언트가 서버에 직접 접근하지 않고 프록시를 통해 요청을 보내면, 프록시가 이를 대신 처리하고, 응답을 클라이언트에게 전달하며, 이러한 중간자 역할을 통해 다양한 기능을 수행할 수 있다.

프록시의 주요 역할

  1. 보안 강화: 클라이언트의 IP 주소를 숨기고, 요청을 필터링하여 외부로부터의 공격을 막는다.
  2. 캐싱: 자주 요청되는 데이터를 캐싱하여 서버 응답 속도를 향상시킨다.
  3. 익명성 제공: 사용자의 IP 주소를 대리 서버로 숨겨 익명성을 유지할 수 있다.
  4. 콘텐츠 필터링: 기업 또는 기관에서 특정 웹사이트나 콘텐츠에 대한 접근을 제한할 수 있다.

프록시의 유형

프록시의 종류는 크게 정방향 프록시(Forward Proxy)리버스 프록시(Reverse Proxy)로 나뉜다.

프록시를 사용하지 않은 경우 아래 사진과 같다.

1. 정방향 프록시(Forward Proxy)

Forward Proxy Diagram

정방향 프록시는 클라이언트와 서버 사이에서 클라이언트의 요청을 서버로 대신 전달하는 역할을 한다.
사용자는 프록시를 통해 웹사이트에 접속하면서 IP 주소를 숨기거나 특정 사이트 차단을 할 수 있고 주로 익명성 유지, 웹 필터링, 인터넷 사용 제어와 같은 용도로 사용된다.
예를 들어, 회사에서는 정방향 프록시를 사용해 직원들이 특정 웹사이트에 접근하지 못하게 하거나 인터넷 사용을 모니터링할 수 있다.

  • 위치: 클라이언트 측
  • 기능: 클라이언트의 요청을 서버로 전달하며, IP 숨기기 및 특정 사이트 차단
  • 장점:
    1. 캐시 저장: 동일한 페이지 재요청 시 캐시에 저장된 데이터를 사용해 빠르게 응답
      Cache

    2. URL 필터링: 특정 사이트 접근 차단
      URL Filtering

2. 리버스 프록시(Reverse Proxy)

리버스 프록시는 클라이언트의 요청을 받아 서버 측에서 요청을 분배하는 역할을 하며, 주로 로드 밸런싱이나 보안 강화 목적으로 사용된다.
클라이언트는 실제로 어떤 서버에 연결되는지 모르며, 리버스 프록시가 모든 트래픽을 관리한다.
대규모 웹사이트에서는 여러 서버에 부하를 분산하거나, 클라이언트의 요청을 필터링하여 보안을 강화할 때 리버스 프록시를 사용한다.

  • 위치: 서버 측
  • 기능: 클라이언트의 요청을 여러 서버에 분배하여 부하를 줄이고, 보안을 강화
  • 장점:
    • 부하 분산: 서버 간 트래픽 분산으로 효율적 자원 사용.
    • 보안 강화: 악의적인 요청을 차단하고, 외부로부터 서버를 보호.
    • 캐시 저장: 자주 요청되는 데이터를 미리 저장해 성능 향상.

활용 예시

  • 정방향 프록시(Forward Proxy): 기업이나 학교에서 특정 웹사이트 차단, 사용자의 익명성 보호.
  • 리버스 프록시(Reverse Proxy): 대형 웹사이트에서 트래픽을 효율적으로 관리하고 서버 부하를 분산시킬 때 활용.

프록시 사용 사례

  1. CORS 문제 해결: 클라이언트가 다른 출처의 리소스를 요청할 때 발생하는 CORS 문제를 우회하는 방법으로 프록시가 사용된다. 프록시 서버가 클라이언트 대신 요청을 처리하여, CORS 제한 없이 통신을 가능하게 한다.
  2. 기업 네트워크 보안: 기업 내부에서 특정 외부 사이트로의 접근을 차단하거나, 직원들의 인터넷 사용을 제어할 때 프록시를 활용할 수 있다. 이를 통해 네트워크 보안을 강화하고, 필요에 따라 웹 트래픽을 모니터링할 수 있다.
  3. VPN과의 차이: 프록시와 VPN(가상 사설망)은 IP 주소를 숨기고 트래픽을 우회하는 점에서 유사하지만, VPN은 네트워크 전체의 트래픽을 암호화하는 반면, 프록시는 특정 애플리케이션이나 브라우저의 트래픽만 처리하는 점에서 차이가 있다.












출처: https://engineer-mole.tistory.com/288

profile
주니어개발자 Fox 입니다 🦊

0개의 댓글