A virtual host is the following :
Settings for virtual hosts, which allow Web requests to be sent to
different IP addresses or hostnames and have them handled by the
same Apache server process
Meaning you fool the requester in a way he your apache shows content located on another host.
I will explain :
a webserver with wan ip : 18.104.22.168 which has an apache web server on it, gets all his web info and shows it to requester from 22.214.171.124 .
Read following its a good explanation :
# ServerName: allows you to set a host name which is sent back to clients for
# your server if it's different than the one the program would get (i.e., use
# "www" instead of the host's real name).
# Note: You cannot just invent host names and hope they work. The name you
# define here must be a valid DNS name for your host. If you don't understand
# this, ask your network administrator.
# If your host doesn't have a registered DNS name, enter its IP address here.
# You will have to access it by its address (e.g., http://126.96.36.199/
# anyway, and this will make redirections work in a sensible way.
ServerName 192.168.1.4 (in my case I don't have dns it's for my local lan + I request it via a dynamic name www.no-ip.com
is a dyndns that gives you a hostname while using dynamic ip addresses, my port 80 in my cisco (192.168.1.1)router is forwarded to 192.168.1.4 so that all web requests will be handled by my webserver...
So first of all I don't think you need any virtual host...
Explain me your config, what's your host's ip for example ? What are you trying to set up ? etc...