I'm not sure about ftp, but I am positive that apache (httpd) does not use tcp_wrappers, so modifying hosts.allow/deny doesn't do anything. I would focus more on general networking connectivity, firewalling/routing, and application missconfigurations.
To start, turn off any firewall apps running on the internal server and use the netstat -pantu command to verify that apache/ftpd is actively listening for connections. If you still cannot connect, try running ethereal on the internal server to capture some traffic while you try to connect through the router in order to see if packets are even getting to the internal box. Also it would be helpful if you posted your firewall (after removing any identifiable IP addresses). Adding a few logging rules around any forwarding or drop rules will probably help trace where a packet is going to as well.