You install VNC server on each machine, no changes.
On your firewall/NAT router/gateway you assign the port to forward to the IP address internally. I.e., if you have an eternal IP address of aaa.bbb.ccc.ddd then you assign port 5900 to go to internal machine 1 on aaa.bbb.ccc.ddd, then 5901 to go to machine 2 on aaa.bbb.ccc.ddd, then 5902 to machine 3 on aaa.bbb.ccc.ddd, etc.
You don't need a 1:1 mapping of "this port on the external interface goes to the exact same port on this machine internally." I had a NAT gateway that had a port in the hundreds region that forwarded to port 22 on my internal 192.168.x.x machine at home.
I don't know what exactly you're trying to do, but I'd add a note that unless you're using a special version of VNC you may be running without any encryption, which you might want to be careful to open to the "public" network.
It sounds like what you may mean by getting two to work is that you forwarded one port to a machine's VNC port and you forwarded the web server version to another machine. You need to forget about 1:1 mapping of ports or you won't get anywhere with adding more servers.
I would strongly suggest that if you're not encrypting VNC connections you should look at setting up a firewall that allows VPN connections and let people connect to your internal network via VPN. That eliminates port forwarding altogether and also encrypts your connection, allowing your network far more security as this setup we're describing opens your internal network to potential abuse.