Blog
Mert Özen's blog posts on software development, backend, frontend, and DevOps.
Getting to Know Kestrel: Endpoints, ASPNETCORE_HTTP_PORTS, Limits and HTTP/2–HTTP/3
Kestrel's listening address is decided by Listen in code, Kestrel:Endpoints, --urls/ASPNETCORE_URLS and ASPNETCORE_HTTP_PORTS, in that order, and every overridden setting shows up as a warning in the log. With nine runs we measure the precedence and look at PEM certificates and SNI, certificate renewal without a restart, default limits, HTTP/3 with libmsquic, connecting to Nginx over a Unix socket and the localhost trap in containers.
Web Servers, Application Servers and Reverse Proxies: How Does an HTTP Request Reach Your App?
Kestrel is both a web server and an application server; a reverse proxy is the layer that accepts the request, forwards it to the app behind it and takes on TLS termination, static files, compression, buffering and load balancing. We send the same request straight to Kestrel and then through Nginx, compare the IP, headers and Angular deep-link behaviour the app sees, and put five hosting topologies side by side.