클라이언트와 서버 사이에서 데이터를 전달해주는 서버.
웹 캐시 등에 많이 쓰는데, 클라이언트의 LAN에 같이 위치해 있어 클라이언트가 번거롭게 외부 네트워크까지 가지 않도록 도와준다. 만약 프록시 서버의 데이터에 클라이언트가 요청한 브라우저 데이터가 캐싱되어 있으면 바로 빠르게 클라이언트가 응답을 받을 수 있다.
엔드 서버 실행(여기서는 tiny 서버로 하겠음)
엔드 서버
> ./tiny 8000
프록시 서버 실행
프록시 서버
> ./proxy 5000
클라이언트와 프록시 서버 연결
클라이언트
> telnet localhost 5000
클라이언트가 연결하고 싶은 엔드 서버의 정보를 프록시 서버에게 요청
클라이언트
GET <http://localhost:8000/home.html> HTTP/1.1
Host : localhost
Connection: xxx
User-Agent: yyy
Proxy-Connection: zzzz
엔드 서버 결과
엔드 서버
Request headers:
GET /home.html HTTP/1.0
Connection: close
Proxy-Connection: close
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:10.0.3) Gecko/20120305 Firefox/10.0.3
Connection: xxx
User-Agent: yyy
Proxy-Connection: zzzz
Response headers:
HTTP/1.0 200 OK
Server: Tiny Web Server
Connection: close
Content-length: 250
Content-type: text/html