가상 호스팅

Virtual hosting

가상 호스팅은 단일 서버(또는 서버 풀)에서 여러 도메인 이름(각 이름을 별도로 처리함)을 호스팅하는 방법이다.[1] 이것은 제공된 모든 서비스가 동일한 호스트 이름을 사용하도록 요구하지 않고 하나의 서버가 메모리, 프로세서 주기 등과 같은 리소스를 공유할 수 있게 한다. 가상 호스팅이라는 용어는 보통 웹 서버를 지칭할 때 사용되지만 원칙은 다른 인터넷 서비스로 이어지게 된다.

널리 사용되는 애플리케이션 중 하나는 공유호스팅이다. 공유 웹 호스팅 가격은 단일 서버에서 많은 고객을 호스팅할 수 있기 때문에 전용 웹 서버보다 저렴하다. 또한 단일 기업이 동일한 기기에서 여러 개의 이름을 사용하고자 하는 것은 매우 일반적이며, 그 이름이 그러한 서비스가 호스팅되는 장소보다 제공되는 서비스를 반영할 수 있다.

가상 호스팅에는 이름 기반과 IP 기반이라는 두 가지 주요 유형이 있다. 이름 기반 가상 호스팅은 클라이언트가 제시한 호스트 이름을 사용한다. 이렇게 하면 IP 주소와 관련 관리 오버헤드가 저장되지만, 서비스되는 프로토콜은 적절한 지점에서 호스트 이름을 제공해야 한다. 특히 SSL/TLS가 있는 이름 기반 가상 호스팅을 사용하는 데 상당한 어려움이 있으며, IP 기반 가상 호스팅은 각 호스트 이름에 대해 별도의 IP 주소를 사용하며, 어떤 프로토콜로도 수행할 수 있지만 서비스되는 도메인 이름당 전용 IP 주소가 필요하다. 항만 기반 가상 호스팅도 원칙적으로 가능하지만 이용자에게 불친절하기 때문에 실제로는 거의 사용되지 않는다.

이름 기반 가상 호스팅과 IP 기반 가상 호스팅을 결합할 수 있다. 서버는 여러 IP 주소를 가질 수 있으며 이러한 IP 주소의 일부 또는 전체에 여러 이름을 제공할 수 있다. 이 기법은 와일드카드 인증서와 함께 SSL/TLS를 사용할 때 유용할 수 있다. 예를 들어, 서버 운영자가 *.example.com용과 *.example.net용 인증서 두 개를 가지고 있다면, 운영자는 동일한 IP 주소에서 foo.example.com과 bar.example.com을 제공할 수 있지만 baz를 위한 별도의 IP 주소가 필요할 것이다.example.net.

이름 기반

이름 기반 가상 호스트는 동일한 IP 주소에 대해 여러 호스트 이름을 사용한다.

이름 기반 가상 호스트에 필요한 기술적 전제조건은 HTTP/1.1을 지원하는 웹 브라우저(오늘날의 공용)로 대상 호스트 이름을 요청에 포함시킨다. 이를 통해 하나의 IP 주소 뒤에 여러 사이트를 호스팅하는 서버가 정확한 사이트의 콘텐츠를 제공할 수 있다. 좀 더 구체적으로 말하자면, 이것은 HostHTTP 헤더, HTTP/1.1에서 필수 사항.[2]

예를 들어, 서버는 www.example.comwww.example.net이라는 두 개의 도메인에 대한 요청을 수신할 수 있으며, 두 도메인 모두 동일한 IP 주소로 확인될 수 있다. www.example.com의 경우 서버는 /var/www/user/Joe/site/ 디렉토리에서 HTML 파일을 전송하고, www.example.net에 대한 요청은 /var/www/user/Mary/site/에서 서버 서비스 페이지를 전송한다. 동일한 도메인의 두 하위 도메인을 함께 호스팅할 수 있다. 예를 들어, 블로그 서버는 blog1.example.com과 blog2.example.com 모두를 호스트할 수 있다.

이름 기반 가상 호스팅의 가장 큰 문제는 SSL/TLS를 실행하는 여러 보안 웹 사이트를 호스팅하는 것이 어렵다는 것이다. SSL/TLS 핸드셰이크는 예상 호스트 이름을 서버로 보내기 전에 이루어지기 때문에 서버는 핸드셰이크에 어떤 인증서를 제시해야 할지 알지 못한다. 단일 인증서가 "주체 이름" 필드 또는 와일드카드를 통해 여러 이름을 다루는 것은 가능하지만, 이 접근방식의 실질적인 적용은 관리 고려사항과 와일드카드의 일치 규칙에 의해 제한된다. SNI를 구현하지 않는 일부 이전 클라이언트(특히 Windows XP 또는 이전 Android 버전의 Internet Explorer)를 제외하고 이 문제를 회피하기 위해 핸드셰이크 시작 시 이름을 표시하는 TLS에 대한 확장명이 있다.

나아가 DNS(Domain Name System)가 제대로 작동하지 않을 경우 IP주소를 알려도 가상 호스팅된 웹사이트에 접속하기 어렵다. 사용자가 http:///10.23.45.67/에서와 같이 IP 주소를 사용하여 시스템에 접속하려고 하면 웹 브라우저가 IP 주소를 호스트 이름으로 전송한다. 웹 서버는 어떤 서버 이름(vhost)을 사용할지 알려주는 웹 브라우저 클라이언트에 의존하므로, 서버는 사용자가 기대하는 사이트가 아닌 기본 웹 사이트로 응답할 것이다.

이 경우 해결 방법은 IP 주소와 호스트 이름을 클라이언트 시스템의 호스트 파일에 추가하는 것이다. 도메인 이름으로 서버에 접속하는 것이 다시 작동해야 한다. 그러나 호스트 이름과 IP 주소 간의 실제 매핑에 대한 변경사항은 로컬 설정에 의해 재정의되므로 사용자는 이 작업을 수행할 때 주의해야 한다. 이 해결책은 일반적인 웹 사용자에게는 유용하지 않지만 DNS 레코드를 수정하는 동안 사이트 관리자에게 유용할 수 있다.

IP 기반

IP 기반 가상 호스팅을 사용할 때 각 사이트(DNS 호스트 이름 또는 동일한 역할을 하는 DNS 호스트 이름 그룹)는 고유한 IP 주소를 가리킨다. 웹서버는 여러 물리적 네트워크 인터페이스, 동일한 물리적 인터페이스의 가상 네트워크 인터페이스 또는 하나의 인터페이스의 여러 IP 주소로 구성된다. 웹서버는 각 IP주소에 대해 별도의 수신 소켓을 열 수도 있고, 단일 소켓으로 모든 인터페이스에서 수신할 수도 있으며, 접속을 승인한 후 TCP 연결이 수신된 IP 주소를 얻을 수도 있다. 어느 쪽이든 IP 주소를 사용하여 서비스할 웹 사이트를 결정할 수 있다. 클라이언트는 이 프로세스에 관여하지 않으므로 (이름 기반 가상 호스팅과 달리) 호환성 문제가 없다.

이 접근 방식의 단점은 서버가 모든 웹 사이트에 대해 다른 IP 주소를 필요로 한다는 것이다. 이는 관리 오버헤드를 증가시키고(서버에 주소를 할당하고 인터넷 등록에 주소를 사용하는 것을 정당화함) IPv4 주소 소진에 기여한다.

포트 기반

HTTP의 기본 포트 번호는 80이다. 그러나, 대부분의 웹서버는 서버의 다른 프로그램에서 포트 번호를 사용하고 있지 않다면 거의 모든 포트 번호에서 작동하도록 구성할 수 있다. 특별한 구성이 필요한 HTTP Secure 특수 포트 443이 있다(서버 이름 표시 참조). 포트 기반 웹 사이트는 고유한 포트 번호와 IP 주소에 명시적으로 바인딩되어 있다. 이 경우 IP 주소는 여러 웹 사이트를 호스팅하는 데 사용된다. 공용 IP 주소에 사용되는 고유 포트 번호는 개별 웹 사이트와 동일한 IP 주소에 바인딩된 다른 웹 사이트를 구분한다.

사용하다

가상 웹 호스팅은 비즈니스 모델이 고객에게 저렴한 웹 사이트 호스팅을 제공하는 기업에서 대규모로 이용되는 경우가 많다. 전 세계 웹 호스팅 서비스 고객 웹사이트의 대부분은 가상 호스팅 기술을 사용하여 공유 서버에서 호스팅된다.

많은 기업체들은 가상 서버를 내부 목적으로 활용하는데, 여기서 고객 엑스트라넷 웹사이트, 직원 엑스트라넷, 내부 인트라넷, 부서별 인트라넷 등 여러 개의 별도 웹사이트를 운영해야 하는 기술적 또는 행정적 이유가 있다. 웹 사이트 아키텍처에 보안 문제가 없을 경우 가상 호스팅 기술을 이용해 단일 서버로 통합할 수 있어 경영 및 관리 오버헤드와 비즈니스 지원에 필요한 별도 서버의 수를 줄일 수 있다.

참고 항목

참조

  1. ^ "How many active sites are there?". Netcraft. Archived from the original on 30 April 2013. Retrieved 14 July 2018. Circa 1996-1997, the number of distinct IP addresses would have been a good approximation to the number of real sites, since hosting companies would typically allocate an IP address to each site with distinct content, and multiple domain names could point to the IP address being used to serve the same site content. However, with the adoption of HTTP/1.1 virtual hosting, and the availability of load balancing technology it is possible to reliably host a great number of active sites on a single (or relatively few) IP addresses.
  2. ^ "Hypertext Transfer Protocol (HTTP/1.1): Message Syntax and Routing". IETF. June 2014. Retrieved 2014-07-24.

외부 링크