404 means you got to a web server somewhere, but (if it's your web server) probably not to the virtual host (what Apple calls a "site") that you had intended. I'll assume you're entering the same string in the browser, whether local or remote.
First, launch Terminal.app and issue the non-destructive diagnostic command
sudo changeip -checkhostname
This command will (usually) indicate whether the network is configured correctly or if there are changes required.
Then issue the following Terminal.app command and see what you get as a response
dig @18.104.22.168 mitchsprogress.org
You'll probably get your public IP address with both commands. If you see different addresses returned from these two commands, please indicate that.
Now check the Apache web server logs, and see what the incoming connections are, and what sorts of errors are arising. If any.
Ok everything looks right with the hostname command, however the 2 dig commands give me a different IP, the first gives me the IP I assigned my desktop (192.168.1.138) and the second gives me my public IP (22.214.171.124). Also I dont know if this matters but the first command returns a NS (nameserver) record and the second does not
So the host name indicated "no changes are required"? Good.
Are you using the same domain inside your network as you're using outside?
Yes; this IP addressing and DNS stuff matters. OS X Server requires correct DNS services, and the web view (virtual host, site, etc) that the web server presents to the client is (somewhat confusingly) based on the DNS services name that the client web browser uses.
If you're getting back an NS nameserver record and not an A machine record from the dig commands, then local DNS isn't right. For some background, here is how to set up DNS on OS X Server and here is how Apache virtual hosts work.