Hi Markedwards,
As an unofficial reply to your issue:
I completely agree about the DNS setup, it is quite a pain to do when virutalmin is running on a private network. I myself use ISA 2006 firewall to publish my virtualmin server.
My personal solution to the DNS situation was to create a completely custom BIND template that is created each time a new server is created. That makes ALL the DNS records correctly reflect my external IP’s, just like they should. If you would like examples of this, I can publish it later.
On the apache issue, you cannot have your apache server listen on an ipaddress that is not bound to your box. In otherwords, unless your linux ethernet adapter is bound to your "real" ip address (not 192.168.1.201) you cannot listen on the "real" ip address. Apache will only listen to 192.168… because that is the only ip address that your machine actually has.
Furthermore, apache listening on this address is what you want in your configuration.
The missing link here is that your NAT device (router, whatever) needs to be routing (via the DMZ fuction or port forwarding or virtual server) all http and https requests (port 80 and 443) on the "real" ip address to the internal ip of 192.168.1.201. Apache will work properly in this configuration, because apache will actually look at the domain name that is being requested and serve up the correct site.
So internet machines request an address from your vmin DNS server.
They receive the external ip address 66.122.112.170.
They send a web request to 66.122.112.170.
Your router forwards the request to the internal ip of 192.168.1.201 that apache is listening to.
Apache serves up the web page.
Internet clients are none the wiser. As far as they are concerned, your web page came from the external ip.
Now, a challenge to this is that from your local network, another computer that tries to browse your virtualmin server may or may not actually connect to the server successfully. It really depends on your router, because this is where the specific method of NAT comes into play (over which you have no control.)
What’s really needed for virtualmin is a split DNS system. However that is not a currently a component, and really gets complicated fast since you would actually have to host two seperate BIND DNS servers on different ip’s (could be the same box in theory, but I don’t know if BIND supports such a thing.) One DNS server serves external requests with the “real” ip, and the other serves internal requests with the 192.168.1.201 ip.
Either way, apache would still be listening to 192.168.1.201.
I hope that this helps answer your question. Good luck!