Você não precisa da configuração do iptables. Na verdade, é provavelmente de onde vem o seu problema. O Apache fará o proxy. O Apache recebe as solicitações na porta 80 para o nome de domínio e faz o proxy das solicitações para o servidor Tomcat correto na porta 8080 ou 8180, como você tem.
O que você tem geralmente é bom. Certifique-se de ter os mods habilitados (proxy, proxy_http).
a2enmod proxy
a2enmod proxy_http
Reinicie o Apache.
Estes podem já estar ativados - ele dirá se eles estavam.
Aqui está o que eu sugiro para suas entradas no VHost:
<VirtualHost *:80>
ServerName www.foo.com
ProxyPreserveHost On
ProxyPass /foo_app http://123.123.123.123:8080/foo_app
ProxyPassReverse /foo_app http://176.34.212.135:8080/foo_app
RewriteEngine on
RewriteRule ^/$ http://www.foo.com/foor_app
</VirtualHost>
<VirtualHost *:80>
ServerName www.bar.com
ProxyPreserveHost On
ProxyPass /bar_app http://123.123.123.123:8180/bar_app
ProxyPassReverse /bar_app http://176.34.212.135:8180/bar_app
RewriteEngine on
RewriteRule ^/$ http://www.bar.com/bar_app
</VirtualHost>
Com ProxyPass, eu sempre tenho o URL balanceado em ambos os lados - pode ser possível tê-los diferentes, mas nunca consegui. O acima é praticamente o que eu tenho em alguns dos meus servidores.