Alright, the way Santa describes NAT is of course correct, for OUTSIDE servers. Not the same for inside servers normally.
I went and got real information on it. With any basic setup, it won't work. There are ways to make it work, but it involves using certain versions of Linux in one case (2.4.x kernel and iptables), and configuring it in a particular way that isn't the default for NAT, or doing the same configurations in a router if it allows it, or using other ways to get around the issue.
One site says Netopia routers support configuring for this way. Cisco did not do it this way the last time I used them, which was about a year ago.
The normal NAT configuration translates the source address when the traffic passes out the external interface. But, if the traffic is going to be redirected to another internal address, like a website, then the source does NOT get translated to the external IP address of the router. The webserver sees a request coming from 192.168.x.x or whatever, and responds to that IP. The requesting computer gets the response but ignores it, since the reply came from a 192.168.x.x address of the server which isn't the IP the browser tried to reach.
The extra configuration which is possible apparently in some routers or routing software makes the translation happen even for traffic being sent to an internal server with a port mapping. I don't know why that would not be an automatic assumption for how to design a NAT system.
Getting around this with a Cisco involves making the Cisco respond to DNS requests for the domain names you're using, and responding with the internal address, so that's easier than using a HOSTS file or your own DNS.