These days, you really don’t need multiple ports, reverse proxies that disambiguate via subdomain or path are incredibly easy to configure.
Reverse proxies are terrible to configure, add processing overhead to every request, violate security boundaries (cookies, localstore, CSP and other security headers are now shared) and introduce new bugs (rewrite didn't know a header, HTML element, JS variable, CSS text should/shouldn't be adjusted).