You would need to create two seprate table for that , one for each isp . This is basically equal cost multipath routing or a case of multiple default routes.
Idea is to use the correct source address and interface for each pkt.
You will need to mark the packets for both incoming and outgoing depending upon your requirements.
Inside the main table the default route will something like this
ip ro add default nexthop via x.x.x.x dev ppp0 nexthop via y.y.y.y dev eth2
You can also have single default route via ppp0 and for webserver you route all outgoing pkts to use eth2 src ip address.
Mine suggestion will be to first try out in a local linux machine and experiment there, once you are sure then you can move it to zeroshell , there also i guess you have to use console to configure it .
Here are few resources , where you can find more info.
lartc.org and netfilter list its a must read if you want to try this out otherwise you will struggle.
if you do try make sure you have IP_ROUTE_MULTIPATH_CACHED disabled in the kernel.
good luck. 🙂