Virtual hosts on same ip AND port
Yes it is possible and quite common, you want name based virtual hosts. There are basically two types virtual hosts, name based and ip based. It gets more complicated with name based if you intended to run SSL, but it is still possible.
It works by looking at the HTTP header in the request to see the domain name being requested.
dont forget to put :
NameVirtualHost 127.0.0.1:80
above vhosts definitions