Home

Awesome

Hello World Module for Nginx

Introduction

This module serves as a learning exercise for me, and hopefully for others too, when doing Nginx module development.

I stole the code and added some notes using mostly Evan Miller's Nginx Module Development Guide. Also helpful is the translation of Vhalery Kholodov's Nginx Module Guide done by Antoine Bonavita that also mantains a Nginx Discovery blog to document his journey on Nginx module development.

Installation

  1. Configure Nginx adding this module with:

    Static Module : ./configure (...) --add-module=/path/to/nginx-hello-world-module
    Dynamic Module: ./configure (...) --add-dynamic-module=/path/to/nginx-hello-world-module
    
  2. Build Nginx as usual with make.

  3. Configure the module. There's only one directive hello_world that is supported in the location context only.

    Example:

    location = /test {
       
       hello_world;
    
    }
    

    Now doing something like:

    curl -i http://example.com/test
    

    should return the hello world string as the response body.

Further reading

TODO

  1. Add an argument to the hello_world directive specifying the language. For example:

    • en: hello world

    • fr: bounjour monde

    • pt: olá mundo

    • es: hola mundo

  2. Make the hello_world directive be also defined in the if in location context (NGX_HTTP_LIF_CONF) in ngx_http_config.h. Which implies defining a merge configuration function.

  3. Document everything with Doxygen linking the relevant header and source files from the Nginx core.