25 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
			
		
		
	
	
			25 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
# Entry-Point Runtime — Nginx
 | 
						|
 | 
						|
## Signals to gather
 | 
						|
- `argv0` equals `nginx`.
 | 
						|
- Config files: `/etc/nginx/nginx.conf`, `conf.d/*.conf`, `/usr/share/nginx/html`.
 | 
						|
- Environment (`NGINX_ENTRYPOINT_QUIET_LOGS`, `NGINX_PORT`, `NGINX_ENVSUBST_TEMPLATE`).
 | 
						|
- Listening sockets on 80/443 (dynamic mode) or `EXPOSE 80` (static).
 | 
						|
- Modules or scripts shipped with the official Docker entrypoint (`docker-entrypoint.sh` collapsing to `nginx -g "daemon off;"`).
 | 
						|
 | 
						|
## Implementation notes
 | 
						|
- Parse `nginx.conf` (basic directive traversal) to extract worker processes, include chains, upstream definitions.
 | 
						|
- Handle official entrypoint idioms (`envsubst` templating) via ShellFlow.
 | 
						|
- Distinguish pure reverse proxies from PHP-FPM combos; when both `nginx` and `php-fpm` run, classify container as `Supervisor`.
 | 
						|
- Record static web content presence (`/usr/share/nginx/html/index.html`).
 | 
						|
 | 
						|
## Evidence & scoring
 | 
						|
- Boost for confirmed config and workers.
 | 
						|
- Add evidence for templating features, env substitution, or modules.
 | 
						|
- Penalise if binary exists without config (likely not the entry point).
 | 
						|
 | 
						|
## Edge cases
 | 
						|
- Alpine images may place configs under `/etc/nginx/conf.d`; include both.
 | 
						|
- Custom builds might rename binary (`openresty`, `tengine`); consider aliases if common.
 | 
						|
- Windows Nginx not supported; fall back to `Other`.
 |