njs scripting language

njs is a subset of the JavaScript language that allows extending nginx functionality. njs is created in compliance with ECMAScript 5.1 (strict mode) with some ECMAScript 6 and later extensions. The compliance is still evolving.

Use cases

  • Complex access control and security checks in njs before a request reaches an upstream server

  • Manipulating response headers

  • Writing flexible asynchronous content handlers and filters

See examples and blog posts for more njs use cases.

Basic HTTP Example

To use njs in nginx:

  • install njs scripting language

  • create an njs script file, for example, http.js . See Reference for the list of njs properties and methods.

function hello(r) {
    r.return(200, "Hello world!");
}

export default {hello};
load_module modules/ngx_http_js_module.so;

events {}

http {
    js_import http.js;

    server {
        listen 8000;

        location / {
            js_content http.hello;
        }
    }
}

There is also a standalone command line utility that can be used independently of nginx for njs development and debugging.

Tested OS and platforms

  • FreeBSD / amd64;

  • Linux / x86, amd64, arm64, ppc64el;

  • Solaris 11 / amd64;

  • macOS / x86_64;

Presentation at nginx.conf 2018

https://www.youtube.com/embed/Jc_L6UffFOs?modestbranding=1&rel=0&showinfo=0&color=white