In the previous article I explained how modules of all types link into Nginx. Now let’s look closer at the specifics of HTTP modules. An HTTP module has the value NGX_HTTP_MODULE in its type field and the ctx field points to a global instance of a structure ngx_http_module_t:
In previous articles I have deliberately omitted almost everything related to the question of linking your module with Nginx. It is important, however, that you know about it. Let’s take a closer look at the metainformation that your module must contain, so that Nginx can initialise and configure it.
Let’s see what we need to do in order to return a simple page to a client using Nginx module. We need to generate a header and a body of the response. To send a response header we use function ngx_http_send_header: #include <ngx_http.h> ngx_int_t ngx_http_send_header(ngx_http_request_t *r); The only argument r is the request for which […]
Nginx processes HTTP requests in multiple phases. In each of the phases there might be 0 or more handlers called. In the Nginx source code phases have specific constants associated with them. Here is a list of all phases: NGX_HTTP_SERVER_REWRITE_PHASE — the phase of request URI transformation on the virtual server level; NGX_HTTP_FIND_CONFIG_PHASE — the […]