There are a few additional ways to extend nginx without writing a module in C.<p>- JavaScript: <a href="https://nginx.org/en/docs/njs/" rel="nofollow noreferrer">https://nginx.org/en/docs/njs/</a> and <a href="https://github.com/nginx/njs-examples">https://github.com/nginx/njs-examples</a><p>- Lua: <a href="https://github.com/openresty/lua-nginx-module">https://github.com/openresty/lua-nginx-module</a><p>- Rust: <a href="https://github.com/nginxinc/ngx-rust">https://github.com/nginxinc/ngx-rust</a>
The following article is maybe slightly outdated by now but gives an overview of the nginx architecture. Probably a good read before diving into the nginx codebase:<p><a href="https://aosabook.org/en/v2/nginx.html" rel="nofollow noreferrer">https://aosabook.org/en/v2/nginx.html</a>
Aah nginx my first love when it comes to networking. Back in the day I played around with it so much. Such a good piece of technology and really taught me the benefits of being highly performant, low memory. There is just something elegant about it.