본문 바로가기

HTTP

[HTTP] 프락시(Proxy)

 

#1. 웹 중개자

웹 프락시 서버는 클라이언트의 입장에서 트랜잭션을 수행하는 중개인이다. 웹 프락시가 없다면 클라이언트는 HTTP 서버와 직접 이야기한다. 웹 프락시가 있다면 클라이언트는 HTTP 서버와 이야기하는 대신 자신의 입장에서 서버와 대화해주는 프락시와 이야기한다.


프락시 대 게이트웨이

프락시 : 같은 프로토콜을 사용하는 둘 이상의 애플리케이션을 연결

게이트웨이 : 서로 다른 프로토콜을 사용하는 둘 이상의 애플리케이션을 연결

프락시와 게이트웨이


#2. 왜 프락시를 사용하는가?

프락시 서버는 보안을 개선하고, 성능을 높여주며, 비용을 절약한다. 프락시 서버는 모든 HTTP 트래픽을 들여다보고 건드릴 수 있기 때문에 프락시는 부가적인 가치를 주는 여러 유용한 웹 서비스를 구현하기 위해 트래픽을 감시하고 수정할 수 있다.

  • 부적절한 사이트의 접근을 강제로 거부할 수 있다.
  • 웹 서버들과 웹 리소스에 대한 단일한 접근 제어 전략을 구현하고 감사 추적을 하기 위해 사용
  • 보안을 강화하기 위해 사용 (보안 방화벽), 바이러스 제거를 위해 트래픽을 살펴볼 수 있는 후크를 제공
  • 웹 캐시, 프락시 캐시는 인기 있는 문서의 로컬 사본을 관리하고 해당 문서에 대한 요청이 오면 빠르게 제공
  • 인터넷 트래픽 조건과 콘텐츠 종류에 따라 요청을 특정 웹 서버로 유도하는 콘텐츠 라우터로 동작
  • 콘텐츠를 클라이언트에게 전달하기 전에 본문 포맷을 수정 가능 (트랜스코더)
  • 익명화 프락시를 통해 개인 정보 보호와 익명성 보장에 기여

#3. 프락시는 어디에 있는가?

 

프락시 서버 배치

(a)개인 LAN 출구프락시  (b)ISP 접근(입구) 프락시  (c)대리 프락시  (d)네트워크 교환 프락시

프락시 배치


어떻게 프락시가 트래픽을 처리하는가

  • 클라이언트를 수정 - 클라이언트는 HTTP 요청을 바로 의도적으로 원 서버가 아닌 프락시로 보냄
  • 네트워크를 수정 - 네트워크 인프라를 가로채서 웹 트래픽을 프락시로 가도록 조정
  • DNS 이름공간을 수정 - 대리 프락시에서 웹 서버의 이름을 사용한다.
  • 웹 서버를 수정 - 서버에서 리다이렉트를 실행


#4. 클라이언트 프락시 설정

  • 수동 설정 - 프락시를 사용하겠다고 명시적으로 설정
  • 브라우저 기본 설정 - 브라우저 벤더나 배포자는 소비자에게 전달 전 프락시를 미리 설정
  • 프락시 자동 설정(PAC) - 자바스크립트 프락시 자동 설정(PAC) 파일에 대한 URI를 제공
  • WPAD 프락시 발견 - 자동설정 파일을 다운받을 수 있는 '설정 서버'를 자동으로 찾아주는 WPAD를 제공

#5. 프락시 요청의 미묘한 특징들

  • 프락시 URI는 서버 URI와 다르다.  서버는 부분 URI, 프락시는 완전한 URI를 보낸다.
  • 가상 호스팅에서 일어나는 같은 문제
  • 인터셉터 프락시는 부분 URI를 받는다.
  • 프락시는 프락시 요청과 서버 요청을 모두 다룰 수 있다.
  • 프락시 서버는 요청 URI의 변경에 매우 신경 써야 한다.
  • URI 클라이언트 자동확장과 호스트 명을 분석

#6. 메시지 추적

오늘날 웹 요청의 상당수가 프락시를 지나간다. 동시에 성능상의 이유로 세계 곳곳에 흩어져 있는 대리 캐시 저장고에 콘텐츠를 복제해두는 방식이 점점 흔해지고 있다. 프락시가 점점 더 흔해지면서 서로 다른 스위치와 라우터를 넘나드는 IP 패킷의 흐름을 추적하는 것 못지않게 프락시를 넘나드는 메시지의 흐름을 추적하고 문제점을 찾아내는 것도 필요한 일이 되었다.


Via 헤더

Via헤더의 예

 

Via 헤더 필드는 메시지가 지나는 각 중간 노드(프락시나 게이트웨이)의 정보를 나열한다. 메시지가 또 다른 노드를 지날 때 마다 중간 노드는 Via 목록 끝에 반드시 추가되어야 한다.


TRACE 메서드

 

TRACE 응답은 수신한 요청 메시지를 그대로 돌려보낸다.

HTTP/1.1의 TRACE 메서드는 요청 메시지를 프락시의 연쇄를 따라가면서 어떤 프락시를 지나가고 어떻게 각 프락시가 요청 메시지를 수정하는지 관찰하고 추적할 수 있도록 해준다. TRACE는 프락시 흐름을 디버깅하는데 유용하다.

TRACE와 OPTIONS 요청의 프락시 홉(hop) 개수를 제한하거나 프락시 연쇄의 어떤 특정 홉에서의 요청을 보기 위해 Max-Fowards를 사용할 수도 있다.


 

참고 자료

  • HTTP완벽가이드 , 인사이트

'HTTP' 카테고리의 다른 글

[HTTP] 통합점: 게이트웨이, 터널, 릴레이  (0) 2020.05.03
[HTTP] 캐시(Cache)  (0) 2020.05.03
[HTTP] 웹 서버  (0) 2020.05.02
[HTTP] 커넥션 관리  (0) 2020.05.01
[HTTP] HTTP메시지  (0) 2020.04.30