I want to set up a http server. I have discrete NAS server connected to router which is than connected to ADSL modem. My NAS server is set to be in routers DMZ. Also, I have setup a DNS record to my server. The problem is, others can visit my server normally, using registered domain name. My problem is, I cannot visit my server using its public ip adress, only private one. Why, and is there a way to be able to access it using public ip?
Your router may not support what is called NAT reflection or NAT loopback, which is what would allow you to access public services on your internal network.
What you need to do is setup split DNS. What split DNS will do is resolve DNS records differently on the inside vs. what's resolved by outside DNS servers.
Does your router/firewall also do DNS in your network? If you can post the make/model of it, we can help you configure it further (if supported). If you're using Windows DNS or BIND, DNSMasq, etc. let us know.