Apache2 Ruby and Python load default website when *.domain.net is set in vhost file
I don't think it has anything to do with the usage of mod_wsgi and Phusion Passenger. I think that's just how ServerAlias works.
You can try this alternative:

Remove the ServerAlias.
Setup a vhost for '*.domain.net' (or, if that doesn't work, '.domain.net' or 'domain.net') which redirects to site1.domain.net.

This also has the advantage that your users cannot bookmark a non-canonical subdomain name.
By the way did you know that Phusion Passenger also supports WSGI?
5 sites setup using named vhosts.

site1.domain.net (PHP) 
site2.domain.net (Python) 
site3.domain.net (Ruby)
site4.domain.net (PHP)
site5.domain.net (PHP)

In the vhost for site1 I also have the ServerAlias set to *.domain.net as I want any undefined addresses to go to that address. 
When I add the *.domain.net to that vhost, the python and the ruby sites redirect to site1 instead of their named vhost. All the php sites work fine.
My guess is the fact that the python and ruby sites are using wsgi and passenger respectively has something to do with why it is loading incorrectly. 
I was reading something about UseCanonicalNames but I don't see how that impacts this. 
I am not just interested in a solution but also a reason why (or how) these other two languages handle their vhost config and why such a change makes a difference.
Thank you for your time and help.