I have a one to one NAT on pfsense that assigns a public IP to an internal IP (running a web server).
When I open the public IP from an internal machine, it will not resolve to the internal IP, instead it opens the router web page.
When I open the public IP from outside my LAN it will go through to the internal IP that is running the web server.
Why can't I open the public IP internally?
I'm also guessing it will be the hairpin NAT issue as mentioned above. There are lots of different names for the same thing - pfSense calls this NAT Reflection.
At the bottom of the relevant NAT/port forward rule, check the 2nd option from the bottom - NAT reflection should be enabled.
The change the default for new rules, you can go to system, advanced, Firewall/NAT then under the Network Address Translation section, uncheck the first box that says Disable NAT Reflection for port forwards.
Also depending on your setup, you may need to disable the HTTP_REFERER and DNS Rebinding checks under System, Advanced, Admin Access. However I would try with the checks enabled first.
Your router's web-based administration is on port 80, so when an inside machine accesses the router on port 80, that's what they get. Moving the router's web administration to another port (typically 8000 or 8080) might fix the problem, unless the router doesn't support hairpin NAT (NATing connections from the inside back to the inside) at all.