This is almost certainly because your router is getting in the way - your request to your webserver is going to your external IP address and so far as the router is concerned this is odd so needs to be blocked (not sure why, it may be security, it may be something else) but the key point is that from your machine and from within your network the IP address is that of your internal network not that on the public network.
To fix this you need to tell your machine that the IP address for http//mydomain.com is local, two ways to do this:
1) Add an entry to your hosts file
2) If you have a local DNS server (probably unlikely if you're running the server on your laptop) and configure that to point mydomain.com to your laptop's IP address instead of going to retrieve the value from the internet.
If this doesn't cover it we're going to need to know a bit more about the layout of your network.
I'll add that this is, sort of, a developer question as the reason I had to work this out in the first instance was to support some internal dev support stuff that needed to be exposed to external access...
No so dirty at all, in my opinion! – Arjan – 2009-11-06T11:33:57.650