-
HTTP 완벽 가이드 : 웹 프락시 정리카테고리 없음 2023. 11. 5. 19:07
웹 프락시 서버는 클라이언트의 입장에서 트랜잭션을 수행하는 중개인이다.
서버와 클라이언트 사이에 위치해있기 때문에, 서버이면서 클라이언트이기도 하다.
따라서 프락시를 구현할 때에는 둘의 역할을 모두 해내도록 구현해야 한다.
게이트웨이와의 차이점은, 게이트웨이는 클라이언트와 서버가 다른 프로토콜로 통신하더라도 호환성을 맞춰주는 책임을 지는 반면,
프락시는 중개 대상인 클라이언트와 서버가 같은 프로토콜을 사용하는 경우를 처리하는 책임을 진다.
그러나 현실 세계에서의 필요에 의해 프로토콜 호환성을 맞춰주는 게이트웨이로서의 기능을 제공하기도 하므로, 사실상 둘의 차이점은 모호하다.
프락시를 사용하는 이유
프락시는 중개자로서의 역할을 갖고 있기 때문에, 중개자의 책임이기만 하다면 어떤 일이든 할 수 있는데, 주로 다음과 같은 이유로 쓰인다.
1. 접근 제어를 통한 보안
2. 캐싱, 대리 웹서버를 통한 성능 향상
3. 비용 절약
4. 트래픽 필터링 및 수정
프락시의 위치
프락시는 중개자로서 다양한 위치에 배치될 수 있는데, 다음은 그 예시다.
1. 출구 프락시
로컬과 인터넷 사이를 오가는 트래픽 제어를 위해 로컬 네트워크의 출구에 프락시를 위치시킬 수 있다.
해킹 방화벽, 미성년자 필터링 등이 이에 해당한다.
2. 입구 프락시
ISP(Internet Service Provider) 서버 근처에 프락시를 위치시켜 사용자들의 다운로드 속도를 개선하거나,
많이 찾는 문서의 사본을 저장하는 캐싱 전략에도 사용된다.
3. 대리 프락시 (리버스 프락시)
웹 서버 바로 앞에 위치하여 웹 서버의 대리자처럼 행동하는 프락시이다. 대리하고자 하는 대상인 웹 서버의 이름과 IP 주소로 위장하기 때문에, 모든 요청은 서버가 아닌 이 프락시로 가게 된다. 주로 웹 서버로 향하는 요청을 일부 필터링 하거나, 캐싱, 보안 등의 목적으로 사용된다.
프락시의 갯수
프락시는 클라이언트와 서버 사이에 여러 개 배치될 수 있을 뿐만 아니라, 같은 계층에도 여러 프락시가 존재할 수 있다.
(ex : 클라이언트 -> 프락시 1 -> 프락시 2-a OR 프락시 2-b OR 프락시 2-c -> 프락시 3 -> 서버 )
Via 헤더를 이용한 프락시 추적
프락시의 갯수가 많아지다보면, 패킷이 어느 프락시를 거쳐서 전달되었는지 추적이 필요할 때가 있는데, 이때 사용하는 것이 Via 헤더이다.
Via 헤더는 메시지가 지나는 중간 노드의 정보를 쉼표를 기준으로 보여준다. 예를 들어,
Via: 1.1 google, 1.1 naver
라는 헤더가 네트워크 요청에 있다면, 해당 요청은 HTTP 1.1 프로토콜을 사용하는 google 프록시를 지나 HTTP 1.1 프로토콜을 사용하는 naver 프록시를 지나 원 서버에 보내진 것이다.
물론 이 헤더에 들어간 프락시 이름은 보안상의 이유로 원래의 호스트 이름이 아닌 가명을 사용하거나, 여러 프록시 이름을 하나로 합칠 수 있다는 점에서 100% 신뢰할 수 있는 건 아니지만, 일반적으로 프락시는 각 Via 항목을 유지하려 노력해야 한다.