njs scripting language 是 nginx 官方推出的一个基于 JavaScript 的扩展,类似 ngx_lua (openresty) 模块,启用后可以通过 JS 脚本来扩展 nginx 功能。
njs 只支持部分 JS 语法,但也足以实现自定义鉴权、修改请求&响应、A/B Test、缓存控制、加解密、子请求等网关功能。
默认情况下是nginx并没包含njs模块,需要独立安装。 本文主要介绍从源码安装的方法。
下载 njs 源码并解压
wget https://github.com/nginx/njs/archive/refs/tags/0.7.6.tar.gz
tar zxf 0.7.6.tar.gz
进入 nginx 源码目录
cd nginx-1.20.2
查看和复制当前使用 nginx 编译参数
nginx -V
使用--add-module
配置参数从nginx根目录编译模块
./configure 刚才复制的编译参数 --add-dynamic-module=path-to-njs/nginx
编译
make modules
编译完成后在当前 nginx 源码目录的 objs 目录下会有 njs 的两个模块文件,复制 so 文件到 nginx 安装目录(即 nginx -V 查看的 --prefix 参数)的 modules 目录下。
ngx_http_js_module.so
ngx_stream_js_module.so
在 nginx.conf 文件添加代码载入需要的模块
load_module modules/ngx_http_js_module.so;
评论区