I'm not sure, but my understanding is that of you have multiple virtual hosts on one machine, and they all listen on the same interfaces/ip addresses then they have to have unique ServerName directive. If you have duplicates, they will all be served by the first virtual host, with a matching ServerName, read httpd.
I'm not really an expert, but you need to do something like:
A. Distinguish the servers (distinct hostname, IP, or port).
B. Have a single virtual host include the definitions for all paths as locations or maybe directories, could possibly maintain separate files by using the include directive, not sure.
C. Have a single virtual host that proxies to the other defined virtual host - they still need a unique name, ip or port.