-
Notifications
You must be signed in to change notification settings - Fork 0
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[2부 6장] 프락시 #5
Comments
[reverse proxy vs api gateway]
|
[pac 설정]
cf1. https://docs.microsoft.com/ko-kr/troubleshoot/developer/browsers/connectivity-navigation/optimize-pac-performance |
[6.3.3] 어떻게 프락시가 트래픽을 처리하는가?
|
일단 3번은 How is a PAC file consumed? 에서는 브라우저가 시작되는 시점에서 pac 파일을 색인하고 적용한다고 하네요. |
6장 프락시
6.1 웹 중개자
HTTP 프락시 서버는 웹 서버이면서 동시에 웹 클라이언트이다.
6.1.1 개인 프락시와 공유 프락시
- 캐시 프락시 서버 등은 이용자가 많을 수록 공통된 요청에서 이득을 취할수 있기 때문에 유리
- 사용자의 컴퓨터에서 직접 실행
- 브라우저 기능 확장/성능 개선
- ISP 서비스를 위한 광고 운영
ISP(Internet service provider)
인터넷 서비스 제공자(Internet service provider; ISP)는 인터넷에 접속하는 수단을 제공하는 주체를 가리키는 말이다.
그 주체는 영리를 목적으로 하는 사기업인 경우가 대다수이나 비영리 공동체가 주체인 경우도 있다.
ISP는 일반적으로 인터넷에서 이용 가능한 모든 것에 대한 접근권을 사용자에게 부여하는 액세스 포인트나 게이트웨이 역할을 한다.
6.1.2 프락시 vs 게이트웨이
둘 다 클라이언트와 서버 사이에 대리자 역할을 수행한다.
ref. API Gateway vs. Reverse Proxy
ref2. What is the difference between a proxy server and a gateway server?)
ref3. API Proxy vs. API Gateway
6.2 왜 프락시를 사용하는가?
프락시 서버 : 실질적이고 유용한 것이라면 무슨 일이든 함
접근 제어 전략을 구현하고 감사 추적(audit trail)
특정 서버는 정해진 프록시 서버로부터만 요청을 받아들이도록 설정할 수 있다.
(클라이언트는 프록시 서버를 거치지 않으면 접속할 수 없다.)
조직 안에 들어오는 프로토콜의 흐름을 통제하여 바이러스 등을 차단한다.
인기 있는 문서의 로컬 사본을 관리하여 통신 비용 절감한다.
진짜 웹 서버 요청을 받지만 웹 서버와는 달리 요청 받은 콘텐츠의 위치를 찾아내기 위해 다른 서버와 커뮤니케이션을 한다.
웹서버 성능 개선, 콘텐츠 라우팅
인터넷 트래픽 조건과 컨텐츠 종류에 따라 요청을 특정 웹서버로 유도(Route)한다.
서버가 클라이언트에 전달하기 전에 본문 포맷을 프록시가 수정할 수 있다.
(파일 압축, 확장자 변환, 번역 등)
신원을 식별할 수 있는 IP 주소, From 헤더, Refer 헤더, 쿠키, URI 세션 아이디 등 을 제거, 수정 할 수 있다.
6.3 프락시는 어디에 있는가?
6.3.1 프락시 서버 배치
6.3.2. 프락시 계층
프락시는 연쇄적으로 구성될 수 있고, 서버에 가까운 쪽을 부모, 클라이언트에 가까운 쪽을 자식 이라고 부른다.
프록시는 정적으로 라우팅 될 수도 있고, 아래와 같은 근거를 바탕으로 동적으로 될 수도 있다.
6.3.3. 어떻게 프락시가 트래픽을 처리하는가
6.4 클라이언트 프락시 설정
6.4.1 수동
명시적 설정
6.4.2 PAC (Proxy Auto Configuration)
javascript 문법으로 된 프락시 설정 파일
*.pac
application/x-ns-proxy-autoconfig
FindProxyForUrl(url, host)
필수 구현DIRECT
,PROXY host:port
,SOCKS host:port
수동 설정은 하나의 서버만을 지정할 수 있지만, PAC은 상황에 맞게 유연한 설정이 가능하다.
ref. Proxy Auto-Configuration (PAC) file
6.4.3 WPAD(Web Proxy Auto Discovery)
PAC 파일을 다운받을 수 있는 설정 서버를 자동으로 찾는 기법
WPAD 는 성공할 때 까지 각 기법을 시도
6.5 프락시 요청의 미묘한 특징들
부분 URI 와 전체 URI
전송 중 URI 변경이 일어날 수 있다
그러나 HTTP 프로토콜에 :80을 명시적으로 붙이는 등의 당연한 일도 치명적인 문제를 야기할 수 있으므로 빈 경로를 /으로 대체하는 것을 제외하고는 안 하는 것이 좋다.
URI 클라 자동확장 & 호스트네임 분석
6.6 메시지 추적
6.6.1 Via 헤더
중간 노드 (프록시나 게이트웨이) 를 지날 때마다 Via 헤더에 중간 노드 정보가 추가된다.
그러므로 일반적으로 요청과 응답은 같은 (순서만 반대인) Via 헤더를 갖는다.
가명을 그룹핑 할 수 있다.
같은 프로토콜, 같은 조직 통제하에 있고, 가명으로 교체되어 있는 경우에만 하나의 프록시 인 것처럼 대체할 수도 있다.
이는 네트워크 내부 설계 등이 노출됨으로써 보안이 깨지는 것을 방지한다.
웬만하면 모든 프록시는 via 헤더(경유지 목록)를 유지하고자 노력해야 한다.
6.6.2 Trace 메서드
각 프록시를 지나면서 어떻게 메시지를 수정하는지 흐름을 확인(디버깅)할 수 있다.
message/http
MAX-Forwards
헤더 : 프록시는 자신이 메시지를 받을 때마다 MAX-Forwards 헤더를 1씩 감소시키고 0인 헤더를 받으면 자신이 원 서버가 아니더라도 클라이언트에게 곧장 답신해야 한다. 프락시 연쇄의 어떤 특정 홉의 요청을 보기 위해서 이용할 수도 있다.6.7 프락시 인증
접근 통제 목적의 프록시는 Proxy-Authenticate 헤더를 통해 어떻게 접근해야 하는 지 알려준다.
407 Proxy Authorization Required
코드 +Proxy-Authenticate
헤더와 반환Proxy-Authenticate
헤더에 담아 재요청6.8 프락시 상호운용성
The text was updated successfully, but these errors were encountered: