I'm unsure of how to ask or describe in words what I'm trying to do, or if it can be done this way, so I decided to draw a diagram. Hopefully its fairly self explanatory:

I know I can do Named based virtual hosts all on Port 80, but can I place them on different ports and have the server work out what named host is which and which port they are on?
<VirtualHost _default_:80>
ServerAdmin webmaster@localhost
DocumentRoot /var/www/foo-1.com
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
<Directory /var/www/foo-1.com/>
Options -Indexes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
allow from all
</Directory>
</VirtualHost>
<VirtualHost _default_:80>
DocumentRoot /var/www/foo-2.com
ServerName foo-2.com
<Directory "/var/www/foo-2.com">
allow from all
Options -Indexes
</Directory>
</VirtualHost>
