Ports
Default ports
| Service | Default | Suggested in a conflict |
|---|---|---|
| Nginx HTTP | 80 | 8080 |
| Nginx HTTPS | 443 | 8443 (cannot be changed from the interface in this version) |
| MariaDB | 3306 | 3307 |
| PHP FastCGI pools | Range 9800–9999 | Chosen automatically |
All services listen only on 127.0.0.1. They cannot be reached from other devices on the local network.
If Nginx runs on a port other than 80, the port is added to project addresses, for example http://magaza.test:8080/. The same rule would apply if the HTTPS port were not 443 (https://magaza.test:8443/); however, in version 0.2.0 the HTTPS port does not appear on the Settings screen and stays at 443.
The ports in use are shown at all times in the status bar at the bottom of the window (Nginx :80, MariaDB :3306), in the Services section of the sidebar, and on the http://localhost/ welcome page.
PHP FastCGI pools
A separate pool of 4 php-cgi processes runs for each PHP minor version. On Windows, each process handles one request at a time, so the pool distributes concurrent requests. Pool ports are derived from the version:
base port = 9000 + major version × 100 + minor version × 10
pool = base … base + 3| PHP | Pool ports |
|---|---|
| 8.0 | 9800–9803 |
| 8.3 | 9830–9833 |
| 8.4 | 9840–9843 |
| 8.5 | 9850–9853 |
If one of these ports is used by another program, Coduva searches the 9800–9999 range in steps of 10 for a free block of four ports, records the one it finds, and uses it on later starts. This event is recorded in the Recent events log as "PHP pool moved to other ports".
Nginx defines an upstream for each PHP version (such as coduva_php_84), and each project's virtual server connects to the pool of its own PHP version. This is why projects using different PHP versions run at the same time.
While Nginx is running, the watchdog checks the processes in the pools every three seconds; it restarts a crashed process and records "Crashed PHP process restarted" in the Recent events log.
Finding the port owner
When a service fails to start, Coduva reads the process listening on the port from the Windows socket table and classifies it:
| Owner | How it is recognized | Explanation shown |
|---|---|---|
| Coduva | The process runs from under C:\Coduva | A Coduva component is listening on this port |
| Windows HTTP server | PID 4 ("System") | IIS or the "World Wide Web Publishing Service" may be running |
| WampServer | The process runs from under \wamp64\bin\ or \wamp\bin\ | Quit WampServer or choose another port |
| XAMPP | The process runs from under \xampp\ (excluding htdocs) | Quit XAMPP or choose another port |
| Laragon | The process runs from under \laragon\bin\ | Quit Laragon or choose another port |
| Other | None of the above | The name and PID of the program |
This classification is shown on the service card with the Port in use status. Example:
Port 80 is used by the Windows HTTP server (http.sys).
IIS or the "World Wide Web Publishing Service" may be running.The HTTPS port (443) is also checked. If it is in use and a project uses HTTPS, Diagnostics reports it as an error; otherwise, as information. If another program holds 443 while a project uses HTTPS, Nginx does not start. Because the HTTPS port cannot be changed from the interface, you need to close the program holding 443 (usually IIS or another local server) or turn off HTTPS in the projects.
Blocked ports
If a port cannot be connected to even when no program is listening on it, the service is shown as Port blocked. The most common cause is excluded port ranges reserved by Hyper-V, WSL or Docker on Windows. To see the reserved ranges:
netsh int ipv4 show excludedportrange protocol=tcpIf your port falls within a range in the list, choose a port outside that range for Coduva.
Changing ports
Nginx HTTP port and MariaDB port can be changed under Settings → Network. Type the new port and click Save on the same row; the default value is shown below the row (for example "Default 80"). The Change ports button in Diagnostics also opens this screen. Rules:
- A port cannot be changed while its service is running; the row shows a Running badge and the message "The service is running; stop it before changing the port." Stop the service first.
- The port must be between 1 and 65535.
- The
9800–9999range is reserved for PHP pools and cannot be selected as a service port. - The port of one service cannot be the same as the port of another Coduva service (or, for MariaDB, the HTTPS port).
When a service restarts, the configuration files are generated with the new port, and project addresses include the new port. If an existing project's configuration still contains the old port, update it:
| Project | What to update |
|---|---|
| Laravel | APP_URL and DB_PORT in .env |
| WordPress | DB_HOST in wp-config.php (127.0.0.1:<port>); if the address has changed, siteurl and home with Change URL (search-replace) |
The port change is recorded in the Recent events log as "Port changed".
Common scenario
If you want to try Coduva without shutting down WampServer or XAMPP, set Coduva's HTTP port to 8080 and its MariaDB port to 3307. The two environments then run side by side.