Powered by OpenBSD httpd

Frederic Cambus December 23, 2015 [OpenBSD]

I've been testing and following httpd progress since its debut in OpenBSD 5.6, and finally decided to make the switch from Nginx for hosting static sites, including this one. For more information about httpd and how it came to be, please read the excellent AsiaBSDCon 2015 paper by Reyk Floeter.

There are a couple of reasons why I wanted to switch, and the main one is probably Nginx itself. While it has served me well for a very long time now, I'm not sure it can still be called lightweight anymore. Moreover, I've grown very wary of software using custom memory allocators.

But most importantly, there is a lot to like about OpenBSD httpd. As it's part of the base system, deployment is really easy and convenient. Basically the only thing to do is to copy the configuration file, create directories for pages and logs, and enable the daemon (which runs chrooted by default) using rcctl. In fact, it's so simple that it can be scripted via SSH using just a few commands, and doesn't require any server orchestration software. I should also note that the configuration file syntax in human-readable style is extremely pleasant to work with. I also like the fact that httpd doesn't use regular expressions at all to match request paths, but uses Lua pattern matching instead. While regexes are a powerful tool, they seem to be misused almost all the time. In case of HTTP servers, they are also an attack vector.

The experience has been very positive so far, and httpd(8) is an excellent piece of software.