I've had this problem a few times before. The easiest way to solve it is to make sure you resolve your domain name as internal for your internal hosts. Depending on the size of your internal network and how you have it setup, there are a couple of ways to accomplish this:
1.- When you just have few internal hosts in your internal network, just modify their "hosts" file (i assume windows C:\WINDOWS\system32\drivers\etc\hosts) to include a line for your domain, pointing to your INTERNAL web server address, i.e. a line like:
where "18.104.22.168" is the INTERNAL ip address for what you call "my web server", usually something like 192.168.0.12; and "my.domain" is what you literally call "My domain".
2.- Setup an internal dns server that essentially does the same job as the previous point. This is way more difficult to set up, and you need it when you have MANY hosts in your internal network. Let me know if you need it.
The most important thing you need to AVOID is that the hosts in your INTERNAL network resolve YOUR domain with your PUBLIC ip, and instead use your INTERNAL PRIVATE ip.