brighttpd
brighttpd is a small and fast static file server that uses Linux kernel toys like io_uring, splice, and kTLS.
getting started
make
mkdir -p www
umask 077
cat > brighttpd.conf <<'EOF'
listen [::]:8080
root www
EOF
./brighttpd -c brighttpd.conf -n
./brighttpd -c brighttpd.conf
features
- static file root is indexed at startup; missing
index.htmland404.htmlfall back to pages embedded into the binary. GETandHEADover HTTP/1.0 and HTTP/1.1, with keep-alive and single range queries.- io_uring accept/recv/send/read/splice/poll/timeout loop with fixed-file registration.
- buffered reads for small files, splice for larger plain HTTP responses, kTLS sendfile path for TLS.
- PKCS#12 TLS config, optional HTTP-to-HTTPS 308 redirects.
- privilege drop, capability clearing,
PR_SET_NO_NEW_PRIVS, always-onseccomp, and connection timeouts.
benchmarks
ran with make bench and make bench-tls on
2026-04-29. machine: Alpine edge, Linux
6.18.26-0-lts, Intel i3-N305, 8GiB LPDDR5.
each benchmark used wrk --latency for 10 seconds on
localhost.
mixed means 90 percent /small, 9 percent
/medium, and 1 percent /big.
charts show actual req/s on one shared axis. HTTP and TLS are split
into separate charts.