그림으로배우는HTTP - 5. HTTP와 연계하는 웹 서버
그림으로배우는HTTP - 5. HTTP와 연계하는 웹 서버
가상호스트(Virtual Host)
HTTP/1.1에서는 하나의 HTTP 서버에 여러 개의 웹 사이트를 실행할 수 있음. 가상호스트(Virtual Host)라는 기능을 사용하면, 서버는 1대지만 가상으로 여러대가 있는 것처럼 설정하는 것이 가능함
인터넷에서 도메인명은 DNS에 의하여 IP주소로 변환되고 나서 엑세스하게 되므로, 결국 서버에 도착한 시점에는 IP주소를 기준으로 엑세스하게 됨.
프록시, 게이트웨이, 터널
HTTP는 서버-클라이언트 이외에도 프록시, 게이트웨이, 터널과 같은 통신을 중계 할 수 있는 역할을 수행할 수 있음
프록시
클라이언트로부터 받은 요청을 다른 서버로 전송하는 역할을 수행.
클라이언트로 받은 요청 URI를 변경하지 않고 바로 리소스를 가지고 있는 서버(오리진 서버)로 전송함.
프록시 서버를 여러 대 경유하는 것이 가능하며, 경유 시, HTTP Header에 Via 필드를 추가하여 경유한 호스트 정보를 추가해야 한다.
프록시 서버의 구분
- 캐시 여부
- 전달 받은 HTTP 메세지를 변경하는지 여부
캐싱 프록시(Caching Proxy)
프록시 서버 상에 리소스 캐시를 보존해 두는 타입의 프록시, 프록시 서버에 동일한 요청에 들어왔을 경우, 오리진 서버로부터 리소스를 획득하지 않고, 캐시 해둔 리소스를 응답.투명 프록시(Transparent Proxy)
메세지를 변경하지 않은 프록시의 유형, 반대로 변경을 가하는 비투과 프록시도 존재함.리버스 프록시(Reverse Proxy)
- 컴퓨터 네트워크에서 클라이언트를 대신해서 한 대 이상의 서버로부터 자원을 추출하는 프록시 서버의 일종.
- 웹 서버들은 리버스 프록시 기능을 사용하는 일이 잦으며 취약한 HTTP 기능의 애플리케이션 프레임워크를 보호
- 리버스 프록시 서버를 앞에 두고 실제 서비스 서버는 내부망에 위치시키고 프록시 서버만 내부에 있는 서비스 서버와 통신해서 결과를 클라이언트에게 제공하는 방식으로 서비스 하는 경우가 많음
포워드 프록시(Forward Proxy)
클라이언트의 요청을 프록시 서버가 받아 오리진 서버에 요청하여 반환하는 결과를 다시 클라이언트에 돌려준다. 단순 중계의 역할을 담당한다고 생각하면 된다. 위에서 설명한 캐싱 프록시의 역할을 수행할 수도 있다.
게이트웨이
- 프록시와 유사. 게이트웨이의 경우, 그 다음에 있는 서버가 HTTP 서버 이외의 서비스를 제공하는 서버가 될 수도 있음.
- 처리 안전성(인증) 및 요청을 집중화 할 수 있는 용도로 많이 사용.
터널
- 다른 서버와의 통신 경로를 확립하며 SSL 같은 암호화 통신을 통해 서버와 안전하게 통신하기 위해 사용
캐시
- 서버 혹은 클라이언트 사이드의 메모리/디스크 등에 보관된 리소스의 임시 사본
- 캐시를 활용하면, 불필요한 서버 요청을 줄일 수 있음
- 클라이언트 혹은 서버에 캐시를 가지고 있더라도 갱신 요구 및 유효 기간 만료 등에 의해 원본 리소스를 가지고 있는 오리진 서버에 재요청을 하게 되는 경우가 생길 수 있음.