You always need a server_name directive if you want to run multiple vhosts on the same IP because otherwise name-based vhosts don't work (nginx cannot know which vhost to display if there's no server_name directive).