Ok, maybe I'm a bit stupid... no, I'm stupid, but I'm not sure I catch the problem.
Let's start from the beginning. You have a webserver in your local network and you want people from the internet to access it, right?
how to send requests to the proper http server
you mean how to tell the Linux box to forward traffic to your webserver?
I'm not into shorewall, but as far as I know it is a graphical interface for iptables, so I can give you iptables advices to do this task.
Notice, this is just an example, it is important to understand that shorewall may use variables, bash commands and conditional statements. Be careful on where you insert these commands... in other words, read the code.
Let's assume your webserver has 192.168.2.100 as address, ok?
First, let's tell the box that when it receives data on port 80 it must forward it to the webserver:
iptables -t nat -A PREROUTING -p tcp -i eth0 --dport 80 -j DNAT --to-destination 192.168.2.100
Add this roule near to the other PREROUTING statements.
Next, assuming shorewall is using DROP as FORWARD POLICY (do you see something like iptables -P FORWARD DROP anywere? good), let's tell iptables that port 80 is okay.
iptables -A FORWARD -i eth0 -o eth1 -p tcp --dport80 -j ACCEPT
Add this rule before any other statement simillar to it (iptables -A ....).
Ok, reload your script and see... note that since i'm not sure how shorewall generates rules, many things could go... somehow wrong (not risky anyway).
If you still have problems, it could be a good idea to post your rule file here.