Each profile ships as INI, YAML, and JSON. The daemon loads all three; --config selects the parser from the path (.yml / .yaml, .json, otherwise INI).
./build/simple-httpd --config config/examples/simple.conf.example --dump-config
./build/simple-httpd --config config/examples/simple.yml.example --dump-config
./build/simple-httpd --config config/examples/simple.json.example --dump-configThe complete key reference is docs/configuration.md. Hardening notes: docs/security.md.
| Profile | INI | YAML | JSON | Use when |
|---|---|---|---|---|
| Simple | simple.conf.example | simple.yml.example | simple.json.example | Local tryout: HTTP on 127.0.0.1:8080, ./www, terminal logs |
| Advanced | advanced.conf.example | advanced.yml.example | advanced.json.example | Multiple sites, gzip, cache headers, rewrite example |
| Production | production.conf.example | production.yml.example | production.json.example | HTTPS on 443, file logs, rate limits, virtual hosts |
| Security | security.conf.example | security.yml.example | security.json.example | TLS + HSTS + CSP, tight timeouts, method filter |
| Users | htpasswd.example | — | — | Plaintext user:password for auth_basic_file |
simple-httpd.conf.example in this directory matches the simple INI profile.
Unknown keys are ignored. INI section headers other than [vhost:hostname] are documentation; keys remain global. YAML/JSON use a virtual_hosts list instead of [vhost:] sections. TLS starts only when both ssl_cert and ssl_key are set.
JSON has no comments. YAML comments start with #. Quote YAML values that contain : (rewrites, CSP).
| Key | Meaning |
|---|---|
listen_address / listen_port |
Bind |
document_root |
Default site |
[vhost:name] (INI) or virtual_hosts (YAML/JSON) |
Extra Host names |
ssl_cert / ssl_key / hsts |
HTTPS |
compression / cache_max_age |
gzip and Cache-Control |
csp / security_headers |
Browser headers |
allow_methods |
Method filter (default GET, HEAD, OPTIONS) |
auth_basic_file / auth_basic_realm |
HTTP Basic |
rate_limit_enabled / rate_limit_requests / rate_limit_window_seconds |
Per-IP window |
rewrite |
Prefix rules from:to (comma-separated string or a list) |
health_path / metrics_path |
/healthz and Prometheus /metrics |
http2 / worker_threads / max_connections |
HTTP/2 and connection capacity |
file_cache / ssi / cgi_prefix / proxy / fastcgi / mime_type |
Optional extras (see configuration.md) |
access_log / error_log / log_level |
Logging (- = stdio) |
Health and metrics skip auth and rate limits so probes still work.