클라이언트 입장에서 트랜잭션을 수행하는 중개인. 웹 서버인 동시에 웹 클라이언트 역할을 수행
- 공용 프락시: 여러 클라이언트가 함께 사용. 대부분의 프락시에 해당.
- 개인 프락시: 하나의 클라이언트가 독점적으로 사용.
- 프락시와 게이트웨이
- 프락시는 같은 프로토콜을 사용하는 둘 이상의 애플리케이션 연결
- 게이트웨이는 서로 다른 프로토콜을 사용하는 둘 이상을 연결
- 하지만, 실질적으로 차이는 모호함
보안 개선, 성능 높임, 비용 절약
- 어린이 필터 (성인용 콘텐츠 차단): 서버의 응답을 받지 않음.
- 문서 접근 제어자: 단일한 접근 제어 전략을 구현. 감사 추적을 하기 위해 사용
- 보안 방화벽
- 웹 캐시: 인기 있는 문서의 로컬 사본을 관리
- 대리 프락시(리버스 프락시, 서버 가속기): 웹 서버인 것처럼 위장. 공용 콘텐츠에 대한 느린 웹 서버의 성능을 개선하기 위해 사용됨.
- 콘텐츠 라우터: 인터넷 트래픽 조건과 콘텐츠 종류에 따라 요청을 특정 웹 서버로 유도
- 트랜스코더
- 트랜스 코딩: 클라이언트에게 전달하기 전에 데이터 표현 방식을 자연스럽게 변환하는 것
- 익명화 프락시: HTTP 메시지에서 신원을 식별할 수 있는 특성들을 제거
- 프락시 서버 배치
- 출구 프락시: 로컬 네트워크의 출구에 박아 넣을 수 있음 .
- 접근 프락시: ISP 접근 지점에 위치
- 대리 프락시: 네트워크의 가장 끝에 있는 웹 서버들의 바로 앞에 위치
- 네트워크 교환 프락시: 네트워크 사이의 인터넷 피어링 교환 지
- 프락시 계층 콘텐츠 라우팅
- 정적
- 동적 부모 선택
- 부하 균형, 지리적 인접성에 근거한 라우팅, 프로토콜/타입 라우팅, 유료 서비스 가입자를 위한 라우팅
- 트래픽 처리
- 클라이언트를 수정한다: 클라이언트에서 수동 혹은 자동 프락시 설정. 의도적으로 원 서버가 아닌 프락시로 요청을 보냄
- 네트워크를 수정한다: 인터셉트 프락시. 네트워크 인프라를 가로채서 웹 트래픽을 프락시로 가도록 함
- DNS 이름공간을 수정한다
- 웹 서버를 수정한다: 서버에서 클라이언트 요청을 프락시로 리다이렉트
- 수동 설정
- 브라우저 기본 설정
- 프락시 자동 설정 (PAC)
- 프락시 설정을 상황에 맞게 계산해주는 작은 자바스크립트 프로그램
- WPAD 프락시 발견 (웹 프락시 자동 발견 프로토콜)
- 브라우저에게 알맞은 PAC 파일을 자동으로 찾아주는 알고리즘
- 프락시 URI는 서버 URI와 다르다.
- 클라이언트가 프락시 대신 서버로 요청을 보내면 요청의 URI가 달라진다.
- 클라이언트가 프락시 사용하지 않도록 설정 → 부분 URI
- 클라이언트가 프락시를 사용하도록 설정 → 완전한 URI
- 인터셉트 프락시는 부분 URI를 받는다.
- 프락시는 프락시 요청과 서버 요청을 모두 다룰 수 있다.
- 전송 중 URI 변경을 거의 하지 않음. (가능한 관대하도록)
- URI 클라이언트 자동확장과 호스트 명 분석
- 프락시 없는 URI 분석
- 브라우저는 유효한 호스트 명이 발견될 때까지 다양한 호스트명의 가능성을 검색함
- 명시적인 프락시를 사용할 때의 URI 분석
- 부분 호스트 명을 자동확장하지 않음.
- 인터셉트 프락시를 이용한 URI 분석
- 장애 허용
- Via 헤더: 메시지가 지나는 각 중간 노드의 정보를 나열
- 쉼표로 구분된 경유지 목록
- 개인정보 악용될 수 있음 → 호스트 명을 가명으로 교체
- trace 메서드
- max-forwards 지원
사용자가 유효한 접근 권한 자격을 프락시에 제출하지 않는 한 콘텐츠에 대한 요청을 차단
- 지원하지 않는 헤더와 메서드 다루기
- 이해할 수 없는 헤더 필드는 그대로 전달.
- 같은 이름의 헤더 필드가 여러 개인 경우 상대적인 순서 유지.
- OPTIONS: 어떤 기능을 지원하는지 알아보기