Extend NGINX With The New JavaScript Module
Written by Nikos Vaggalis   
Monday, 28 October 2024

Inject middleware functionality into NGINX with the expressive power of Javascript. NGINX JavaScript or NJS for short is a dynamic module under which you can use scripting for hooking into the NGINX execution model.

This means that with the NJS module you can:

  • Add complex access control and security checks before requests reach upstream servers

  • Manipulate response headers

  • Write flexible, asynchronous content handlers, filters, etc

For instance you could write a hello.js file that intercepts the request coming in to return a message to the client:

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

export default {hello}

To import the JavaScript file and execute the function under specific circumstances, you modify the NGINX configuration as:


Of course, you'll be asking how this JavaScript code is executed.
The answer is that NGINX comes with an embedded Javascript engine customized to apply to NGINX's unique requirements. That aside, the JavaScript that NJS uses is a subset compliant with ES5 (ECMAScript 5. 1 Strict Variant) with some ES6 (ECMAScript 6) and newer extensions.

That means that you should not expect Node.js alike functionality, server side code execution or library capabilities like. Also NJS is not here to replace Lua scriopting which is the most popular way to write middleware code for NGINX but as an alternative aimed at those not familiar with Lua.

To install it you can build it from source or easier to use the package form: 

 package nginx-module-njs

After the package installation, the njs dynamic modules need to be loaded with the load_module directive:

load_module modules/ngx_http_js_module.so;

Then use it as the code displayed in the beginning of the article. You can also follow NGINX JavaScript examples to get started.

To conclude, njs brings another and more developer-friendly way to an existing and ever expanding arsenal of ways to extend NGINX's functionality.

 

More Information

njs

 

Related Articles

JSNation 2024 Sessions Now Available Online

 

 

 

To be informed about new articles on I Programmer, sign up for our weekly newsletter, subscribe to the RSS feed and follow us on Twitter, Facebook or Linkedin.

Banner


Linux Foundation Mentorship Program
15/04/2025

Applications are now open for Summer 2025 participation in the Linux Foundation Mentorship Program, a program that provides structured guidance and opportunities for newcomers to contribute to th [ ... ]



JetBrains Junie and AI Assistant Expand Reach
24/04/2025

All JetBrains AI tools, including the coding agent Junie and its  improved AI Assistant are now available within its IDEs under a single subscription and come with a free tier.


More News

espbook

 

Comments




or email your comment to: comments@i-programmer.info

Last Updated ( Monday, 28 October 2024 )