Write to us

Web server

Nexagate

Nexagate is our own web server, written in Rust from the ground up. This website runs on it.

In use

211,000 HTTP/2 requests a second, against 155,000 for nginx The lower of two runs each, on 29 September 2026, on one desktop with 4 cores per server, counting only successful responses

What it does

It sits in front of an app and talks to the world over HTTP/1.1, HTTP/2 and HTTP/3. It gets and renews its HTTPS certificates by itself, and passes each request on to the right app.

Six web servers, one test

We ran Nexagate, nginx, HAProxy, rpxy, Pingora and Caddy on one desktop, with four CPU cores each, every one set up the way its own manual says. Only successful answers counted.

MeasureNexagatenginxBest of the rest
HTTP/2, requests a second211 to 219k155 to 159kHAProxy, 142k
HTTPS, requests a second, on open connections126 to 128k90 to 92kHAProxy, 103k
New connections, new secure connections a second15.1 to 15.2k7.5 to 7.8krpxy, 14.5k
A 100 MiB file, MiB a second15.8 to 16.8k2.1 to 2.3kHAProxy, 14.3k
Memory at rest, MiB when idle4.2 to 5.733Pingora, 11
CPU per request, µs per HTTP/2 request14.3 to 14.818.9 to 19.4HAProxy, 21.5

Measured on 29 September 2026. Higher is better for the first four, lower for the last two. Plain HTTP/1.1 is a tie with nginx, and an idle plain connection costs 6.5 to 6.9 KiB against 3.9 for nginx.

Read the whole story