this looks like there is an issue with JS blocking or a reverse proxy with a wrong configuration in front of the sonarqube instance. can you describe your infrastructure a little more in depth?
The sonarqube is behind an nginx reverse proxy consisting of 1 proxy_pass line, however, when using curl localhost:9000 on the server or using lynx on the server, I get the same Loading page, so it seems the issue is not related to the proxy.
debugging this with curl or lynx might be a little misleading as both do not support rendering via javascript and the infinite spinner is due to a failure in loading the required javascript files.
can you dig a little bit in your nginx logs and in you sonarqube logs? maybe we can find something here. also i have experienced that sonarqube (or tomcat to be more precise) be confused when you set the web context to something like /foo/baz, so maybe this is something to check in your deployment.