NameVirtualHost *:80
# This VirtualHost is used for requests with no server name.
<VirtualHost *:80>
DocumentRoot /www/localhost
# (www).example1.com
<VirtualHost *:80>
ServerName www.example1.com
ServerAlias example1.* www.example1.*
UseCanonicalName on
DocumentRoot /www/example1
</VirtualHost>
# (www).example2.com
<VirtualHost *:80>
ServerName www.example2.com
ServerAlias example2.* www.example2.*
UseCanonicalName on
DocumentRoot /www/example2
</VirtualHost>
More complex answer, if you don't mind specifying a port number on one of them (http://host1.domain.com and then http://host2.domain.com:81) and your firewall can do port mapping, then you can share IP address. If you had a layer 7 load balancer or a reverse proxy server, you could also share an IP address and the balancer can send to the correct host based on the host name.