First, see this guide: http://lartc.org/howto/lartc.rpdb.multiple-links.html (and/or other guides for using multiple default routes)
So in your case, I think the solution would be configure two network interfaces (the default eth0 and e.g. eth0:1 with a different valid ip from your lan) for your server, then configure routes so that by default all traffic go to the vpn, and traffic originating from the secondary interface stays off the vpn. Then with ssh bind to the secondary interface with the -b option.
OR set up the multiple routes so that traffic from the secondary interface goes to the vpn, then set up a www proxy server that is bound (only) to the secondary ip address. Then use that proxy server with the browsers.
OR if you use (only) wget, do the above and use the --bind-address option to bind to the secondary interface.
OR a less general solution, as as laurent commented on Dec 20 on the other answer, you can configure an ip specific route for the servers you're connecting to, without fiddling with multiple routing tables. Like this:
route add -host [the host you're connecting to] gateway [your gateway address]
Here's a real world example. I have a vpn connection set up, the vpn address is 23.21.xxx.yyy and my local external address is 91.157.xxx.yyy, and my local internal gateway address is 192.168.0.1.
root@dell64:~# curl -s ipchicken.com|egrep '[0-9]+[.][0-9]+[.][0-9]+[.][0-9]+.*<br>'|sed 's/[0-9][0-9]*[.][0-9][0-9]* .*/xxx.yyy/'
23.21.xxx.yyy
root@dell64:~# route add -host ipchicken.com gateway 192.168.0.1
root@dell64:~# curl -s ipchicken.com|egrep '[0-9]+[.][0-9]+[.][0-9]+[.][0-9]+.*<br>'|sed 's/[0-9][0-9]*[.][0-9][0-9]* .*/xxx.yyy/'
91.157.xxx.yyy
(ipchicken.com website just displays your external ip address, and the grep filters just the line with the external ip address, and the sed replaces the last parts with xxx.yyy)