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.
| Program | What the browser shows | Where the UI really is |
|---|---|---|
| PHP-FPM | Nothing, or connection reset | Through Nginx or Apache on 80 or 8080 |
| SonarQube | Login page (admin / admin first time) | localhost:9000 |
| MinIO server | Redirect or XML error | Console on the --console-address port |
| Portainer (older docs) | Portainer login | Newer 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
- Work out which of these programs you meant to run.
- For PHP, open the site through the web server, not port 9000.
- For SonarQube or MinIO, read their logs for the 'up' message.
- 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
- localhost:9090: Prometheus or Cockpit
- localhost Refused to Connect: Find the Cause in Minutes
- Location Pages SEO: Real Pages for Real Places
- Logo Size for a Website: Every Size You Need
- How to Make a Website with HTML and CSS
- Markdown Cheat Sheet
- Microsoft Teams Webhook: How to Post Messages in 2026
- Migrating Off Drupal Multisite: Choosing a Path After Drupal 7 and Moving Sites in Order | How-to Guide
Product
Who It's For
- For Agencies
- For Freelancers
- For Hosting Providers
- For SaaS Platforms
- For Startups
- For Financial Services
- For Healthcare
Features
Resources
- Blog
- Help Center
- Free Business Tools
- Free UI Components
- Website Templates
- Template Collections
- Website Examples
- Guides
- Comparisons
- Alternatives
- Best Lists
- Reviews
- Pricing Guides
- Use Cases
- Glossary & Guides
- Integrations
- Developers
- Benchmark
- Windows App