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.