Virtual hosts would definitely work. You'll need to have Apache listen on another port beside 80, then bind a virtual host to the address and port like this:
You'll probably want some other controls over the vhost like password protection. Put these directives in a file in /etc/apache2/sites-available and create a symlink to the file in /etc/apache2/sites-enabled (or use a2ensite). Then restart apache with "sudo service apache2 restart".
Options Indexes FollowSymLinks MultiViews
allow from all
Have your router forward an external port (choose one over 1023) back to the server's port 8080 or whatever port you choose for the virtual host.