Я не включил Apache, поскольку его кодовая база на порядок больше двух упомянутых.
На самом деле код Apache вполне читабелен. У него большая база кода, потому что он делает много вещей. Но это хорошо структурировано и довольно легко понять. Вы также можете проверить библиотеку APR (Apache Portable Runtime), в которой есть множество мелких вещей, из которых можно поучиться.
IMO, если вы хотите изучать программирование, вы должны начать с проектов более низкого профиля - и не с HTTPd, а с чего-то более простого.
И nginx, и LightHTTPd (как и Apache) являются программным обеспечением производственного качества, что означает очень крутую кривую обучения. И, к сожалению, learning часто означает копание архивов, чтобы понять, почему именно так - с возрастом приходит в любой зрелый проект.
Если вы просто изучаете C и изучаете дизайн, вы можете проверить FreeBSD или ее производные. По моему опыту, это лучшее место для старта: там много инструментов и библиотек всех калибров. И их списки TODO никогда не бывают пустыми, что служит хорошим руководством для начала.