Web Server Load Balancing with NGINX Plus

NGINX Plus is a powerful platform for delivering high‑performance web applications. Part of the strength of our application delivery platform comes from the large community of developers contributing new features and functionality through our open source base. New features developed by the community are available as modules that can be dynamically plugged into a running NGINX Plus instance.

For example, with community‑contributed (and NGINX‑authored) modules you can locate users by their IP address and send them to language‑specific sites, resize images to save bandwidth, and embed Lua scripting (allowing complex routing and security operations).

NGINX maintains a repository of third‑party modules that are fully tested and certified for correct interoperation with NGINX Plus. When you load a module to dynamically plug it into a running NGINX Plus instance, you can be confident that both NGINX Plus and your selected modules are fully supported by the NGINX team. For the complete list, see Dynamic Modules.

Third‑party and custom modules not in the list can also be compiled and dynamically loaded into a running NGINX Plus instance. For instructions, see our blog.

NGINX Plus allows features to be plugged in on demand
Features can be plugged into NGINX Plus on demand

Developers are encouraged to use our documentation on extending NGINX to write their own modules. The documentation includes our published API along with examples.

Getting Started

The NGINX Plus repository includes both dynamic modules authored by NGINX and approved modules authored by community contributors. You can access and install them using standard package management tools such as apt and yum.

NGINX Plus Certified Modules are distributed by their authors. To access them, click the module’s entry on the Dynamic Modules page and then the Get Module button.

  1. Configure your package management tool to retrieve packages from the NGINX Plus repository rather than an OS vendor’s distribution.

  2. Install the base nginx‑plus image. These commands are appropriate for Debian‑based systems.

    # apt-get update
    # apt-get install nginx-plus
  3. Install each module you want to load dynamically.

    • For Certified Modules, follow the vendor’s instructions.

    • For modules in the NGINX Plus repository, repeat the following command for each module. The name to substitute for module‑name appears in the installation instructions that you can access by clicking the module’s entry on the Dynamic Modules page. As an example,
      nginx-plus-module-njs is the NGINX JavaScript module.

      Note that some modules are not available for certain OS versions because of OS limitations. To display the supported OS versions for a module, click the module’s entry on the Dynamic Modules page.

      # apt-get install module-name
  4. In the main (top‑level) context in /etc/nginx/nginx.conf, add a load_module directive for each dynamically loadable module. As shown, the conventional directory for modules is /etc/nginx/modules.

    load_module modules/;
  5. Check the new configuration for syntactic validity and reload NGINX Plus.

    # nginx -t && nginx -s reload

    The modules listed in load_module directives in nginx.conf are dynamically loaded into NGINX Plus.