가상 호스팅 또는 버추얼 호스팅(virtual hosting)은 하나의 서버(또는 서버 풀)에 여러 개의 도메인 이름(각 이름을 별도 관리)을 호스팅하는 방식을 말한다.[1] 이를 통해 한 서버는 메모리, 프로세서 사이클 등 자신의 자원을 공유할 수 있으며 동일한 호스트명을 사용하기 위해 제공되는 모든 서비스가 필요하지 않다. 가상 호스팅이라는 용어는 웹 서버의 참조로 보통 사용되지만 원칙적으로는 다른 인터넷 서비스에도 적용된다.
널리 쓰이는 분야의 하나로 공유 웹 호스팅이 있다. 공유 웹 호스팅의 가격은 전용 웹 서버보다 낮은 편인데 그 이유는 수많은 고객이 하나의 서버에서 호스팅될 수 있기 때문이다. 동일한 머신에 여러 이름을 사용하려는 일은 매우 흔한 편이다.
2가지 종류의 가상 호스팅이 있다: 이름 기반, IP 기반. 이름 기반 가상 호스팅은 클라이언트에 의해 대표되는 호스트명을 사용한다. 이를 통해 IP 주소, 그리고 이와 연결된 관리 부하를 절약해주지만 서비스되는 프로토콜은 적절한 지점에서 호스트명을 제공해야 한다. 특히 SSL/TLS로 이름 기반 가상 호스팅을 사용하는 일은 매우 난해한 편이다. IP 기반 가상 호스팅은 각 호스트명별로 별도의 IP 주소를 사용하며 어떠한 프로토콜이 와도 수행이 가능하지만 서비스되는 도메인명마다 전용 IP 주소가 필요하다. 포트 기반 가상 호스팅 또한 원칙적으로 가능하지만 사용자에게 친숙하지 않은 이유로 거의 쓰이지 않는 편이다.
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.