If you’re hosting anything for real on the Internet today, you pretty much must have a reverse proxy implementation of some sort. Having a public-facing IP for each and every game server won’t end well.
Once you have an unreal-forwarder reverse proxy, you can start adding smarts to it, spreading your host processes across many different machines, and such. It also provides a nice place to slide in things such as cross-instance chat.