HTTP/1.1 server in C
Note
The project is still in the development stage without a planned release date.
This is a zero-dependency C implementation of HTTP/1.1 server, specified by RFC 9112, RFC 9110, RFC 2616 and RFC 2068; featuring manually written parser (via a finite state machine).
To build the server, run
makeor, for a release build,
make bin/releaseYou can launch the server as follows:
sudo ./bin/serverThe parser is designed to reject with 400 Bad Request all messages deviating
from specifications (like SP before header colon :), containing obsolete
spec, and those containing elements that are now used as attack vectors (desync
attacks such as CL.TE).
This is largely an educational project, which, in practice, may be run:
- inside a private network or a container cluster;
- as a purpose-built static origin;
- in embedded environments;
- behind a reverse proxy or a CDN (with caution).
- HTTP/1.1 implementation
- HTTP/1.0 support
- HTTP/0.9 support
- Proxy support