Содержание
Example: A Simple “Hello World” Module
This example uses a simple Hello World module to show how to update the source for a module and load it into NGINX Plus. The “Hello World” module implements a simple directive (hello_world
) that responds to requests with a simple message.
Step 1: Obtain the NGINX Open Source Release
Determine the NGINX Open Source version that corresponds to your NGINX Plus installation. In this example, it’s NGINX 1.11.5.
''$ **nginx -v**nginx version: nginx/1.11.5 (nginx-plus-r11)''
Download the corresponding NGINX Open Source package at nginx.org/download:
''$ **wget https://nginx.org/download/nginx-1.11.5.tar.gz** $ **tar -xzvf nginx-1.11.5.tar.gz**''
Step 2: Obtain the Module Sources
Obtain the source for the ‘Hello World’ NGINX module from GitHub:
''$ **git clone https://github.com/perusio/nginx-hello-world-module.git**''
The config shell file for a module defines how it is built, and its format is different for dynamic modules than for modules being built statically into an NGINX Open Source binary.
Modify the file nginx-hello-world-module/config to contain the following:
''ngx_addon_name=ngx_http_hello_world_module if test -n "$ngx_module_link"; then ngx_module_type=HTTP ngx_module_name=ngx_http_hello_world_module ngx_module_srcs="$ngx_addon_dir/ngx_http_hello_world_module.c" . auto/module else HTTP_MODULES="$HTTP_MODULES ngx_http_hello_world_module" NGX_ADDON_SRCS="$NGX_ADDON_SRCS $ngx_addon_dir/ngx_http_hello_world_module.c" fi''
For detailed information about compiling dynamic modules, including instructions on updating a module’s config file from the old format, see the NGINX Wiki.
Step 3: Compile the Dynamic Module
Compile the module by first running the configure''
script with the –with-compat
argument, which creates a standard build environment supported by both NGINX Open Source and NGINX Plus. Then run make
modules
to build the module:
''$ **cd nginx-1.11.5/** $ **./configure --with-compat --add-dynamic-module=../nginx-hello-world-module** $ **make modules**''
Copy the module library (.so file) to /etc/nginx/modules:
''$ **sudo cp objs/ngx_http_hello_world_module.so /etc/nginx/modules/**''
Step 4: Load and Use the Module
To load the module into NGINX Plus, add the load_module''
directive in the top‑level (main) context of your nginx.conf configuration file (not within the http
or stream
context):
''load_module modules/ngx_http_hello_world_module.so;''
In the http
context, add a location
block with the hello_world
directive provided by the Hello World module. Requests to the location return the response hello
world
.
''server { listen 80; location / { hello_world; } }''
Reload your NGINX Plus configuration and test it with a simple request:
''$ **nginx -s reload** $ **curl http://localhost/** hello world''