localhost:9000: Which Program Is It?

Port 9000 is shared by very different programs. PHP-FPM listens there for FastCGI, which browsers cannot speak, so opening it directly gives an empty or reset response. SonarQube serves its dashboard on 9000, MinIO serves its S3 API there, and older Portainer setups used it for the web interface.

Programs on port 9000
ProgramWhat the browser showsWhere the UI really is
PHP-FPMNothing, or connection resetThrough Nginx or Apache on 80 or 8080
SonarQubeLogin page (admin / admin first time)localhost:9000
MinIO serverRedirect or XML errorConsole on the --console-address port
Portainer (older docs)Portainer loginNewer installs use https on 9443

Updated

The PHP case causes the most confusion. Nginx passes PHP requests to 127.0.0.1:9000, and if PHP-FPM is not listening there, visitors see a 502 Bad Gateway from Nginx. The port itself was never meant to open in a browser.

Point Nginx at PHP-FPM

Nginx location for PHP

Use exactly one fastcgi_pass line, matching PHP-FPM's listen setting.

location ~ \.php$ {
    include fastcgi_params;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    fastcgi_pass 127.0.0.1:9000;
    # or: fastcgi_pass unix:/run/php/php8.3-fpm.sock;
}

Matching Nginx to PHP-FPM

Find the listen line in the PHP-FPM pool file, usually www.conf. If it says 127.0.0.1:9000, use fastcgi_pass 127.0.0.1:9000; if it shows a .sock path, use fastcgi_pass unix: followed by that path.

Tuning PHP pools is something We.Inc customers never deal with, because the hosting comes already set up.

How it works

  1. Work out which of these programs you meant to run.
  2. For PHP, open the site through the web server, not port 9000.
  3. For SonarQube or MinIO, read their logs for the 'up' message.
  4. Check for a clash, since two of these cannot share 9000.

Tips

  • Newer Debian and Ubuntu PHP-FPM packages listen on a Unix socket, not 9000, so fastcgi_pass must match the listen line in the pool config.
  • SonarQube needs vm.max_map_count raised on Linux, or its Elasticsearch fails and 9000 never opens.
  • MinIO's console moved off 9000 to a separate port; start it with --console-address :9001 to make it predictable.
  • Xdebug 2 used port 9000 too, which clashed with PHP-FPM; Xdebug 3 moved to 9003.

Frequently asked questions

Why does localhost:9000 show nothing for PHP?

PHP-FPM uses the FastCGI protocol, not HTTP. Your web server talks to it; you open the site on the web server's port instead.

Why does Nginx give a 502 with PHP-FPM on 9000?

PHP-FPM is stopped or listening on a socket while Nginx points at 127.0.0.1:9000. Make fastcgi_pass match the pool's listen setting and restart both.

What is the SonarQube default login on localhost:9000?

admin with password admin, and SonarQube asks you to change it on first sign-in.

Where is the MinIO console if 9000 is the API?

MinIO prints the console address at startup. Set it with --console-address :9001 and open localhost:9001.

Related: 502 Bad Gateway, Nginx 502 errors, localhost:9090, localhost:8080.

Start for free or see all free tools. We.Inc is free to start, with no card needed. AI building is on paid plans from $20 a month.

More in Guides

Product

Who It's For

Features

Resources

Company

View Sitemap