프록시란,서버와 클라이언트의 양쪽 역할을 하는 중계 프로그램으로 클라이언트로부터 받은 리퀘스트를 다른 서버에 전송하는 것이다. 클라이언트로부터 받은 리퀘스트 URL를 변경하지 않고 그 다음의 리소스를 가지고 있는 서버에 보낸다. 그리고 이 리소스 본체를 가진 서버를 오리진 서버(Origin Sever)라고 부르며 오리진 서버로부터 되돌아온 리스폰스는 프록시를 경유해서 클라이언트에 돌아온다.
추가로 이러한 프록시를 경유하것은 체인과 같이 여러 대의 프록시를 경유하는것이 가능하고 중계를 할 때는 Via 헤더 필드에 경유한 호스트 정보를 추가해야한다.
프록시 서버를 사용하는 이유는 캐시를 사용해서 네트워크 대역 등을 효율적으로 사용하는 것과 조직 내에 특정 웹 사이트에 대한 엑세스 제한, 엑세스 로그를 휙득하는 정책을 철저하게 지키려는 목적으로 사용하는 경우가 있다.
프록시로 리스폰스를 중계하는 때에는 프록시 서버 상에 리소스 캐시를 보존해 두는 타입의 프록시이다. 프록시에 다시 같은 리소스에 리퀘스트가 온 경우, 오리진 서버로부터 리퀘스를 휙득하는 것이 아니라 캐시를 리스폰스로서 되돌려주는 것이 있다.
프록시로 리퀘스트와 리스폰스를 중계를 할 때 메세지 변경을 하지 않는 타입의 프록시를 투명 프록시라고 한다. 반대로 메시지를 변경을 가하는 타입의 프록시를 비투과 프록시라고 한다.
게이트웨이는 프록시와 매우 비슷하지만, 그 다음에 있는 서버가 HTTP서버 이외의 서비스를 제공하는 서버가 된다. 클라이언트와 게이트웨이 사이를 암호화하는 등으로 안전(secure)하게 접속함으로써 통신의 안전성을 높이는 역할 등을 한다.
예를 들면 게이트웨이는 데이터 베이스에 접속해 SQL 쿼리를 사용해서 데이터를 얻는 곳에 이용할 수 있다. 그 밖에도 쇼퓽 사이트 증에서 신용 카드 결제 시스템 등과 연계할때 사용되기도 한다.
터널은 요구에 따라서 다른 서버와의 통신 경로를 확립하는 역할을 한다. 이 때 클라이언트는 SSL과 같은 암호와 통신을 통해 서버와 안전하게 통신을 하기 위해 사용된다.
터널 자체는 HTTP 리퀘스트를 해석하려고 하지 않고, 결국 리퀘스트를 그대로 다음 서버에 중계한다. 그리고 터널은 통신하고 있는 양쪽 끝의 접속이 끊어질 때에 종료하게 된다.(터널 자체는 투명한 존재이기 때문에 클라이언트는 너무 의식할 필요가 없다.)
캐시(Cache)는 프록시 서버와 클라이언트의 로컬 디스크에 보관된 리소스 사본을 가리킨다. 캐시를 사용하면 리소스를 가진 서버에의 엑세스를 줄이는것이 가능하기 때문에 통신량과 통신 시간을 절약할 수 있다.
이와 같은 캐시를 이용하면서 장점은 같은 데이터를 몇 번이고 오리진 서버에 전송할 필요가 없다는것이다. 그래서 클라이언트는 네트워크에서 가까운 서버로부터 리소스를 얻을 수 있게 되어 서버는 같은 리퀘스를 매번 처리하지 않아도 된다.
캐시 서버에 캐시가 있는 경우라도 같은 리소스의 리퀘스트에 대해서 항상 캐시를 돌려준다고 할 수는 없다. 언제까지나 같은 캐시를 계속해서 사용하고 있다 보면 오리진 서버에 있는 원래 리소스가 갱신되는 경우가 있는데, 이때 캐시 서버는 갱신되기 전의 낡은 리소스를 그대로 보내게 된다.
그래서 캐시를 가지고 있더라도 클라이언트의 요구나 캐시의 유효기간 등에 의해서 오리진 서버에 리소스의 유효성을 확인하거나 새로운 리소스를 다시 획득하러 가게 되는 경우가 있다.
캐시 서버만 캐시를 가지고 있는게 아니라 클라이언트가 사용하고 있는 브라우저에서도 캐시를 가질 수 있다. 인터넷 익스플로러에서 클라이언트가 보존하는 캐시를 인터넷 임시 파일이라고 부른다.브라우저가 유효한 캐시를 가지고 있는경우, 같은 리소스의 엑세스는 서버에 엑세스하지 않고 로컬 디스크로부터 불러 온다.
또한 캐시 서버와 마찬가지로 리소수가 오래된 것으로 판단이 될 경우 오리진 서버에 리소스의 유효성을 확이하러 가거나 새로운 리소스를 다시 휙득하러 가는 일이 있다.