njs 0.8.0 已发布。此版本新增用于 http 和 stream 的共享词典 (shared dictionary),以及全局 ngx 属性。
njs 以 nginx 插件的方式存在,它是 JavaScript/ECMAscript 的子集,实现了大部分的 JavaScript 语言功能,没有完全遵从 ECMAScript 标准,同时抛弃了 JavaScript 比较难懂的部分。njs 不通过 V8 引擎实现,而是通过一个更小、能耗更低、更符合 nginx 应用场景的小虚拟机实现,可以理解成 nginx 为其实现了一套自己的词法解析。
作为 nginx 的插件,njs 的安装方式是重新编译 nginx。
新版本下载地址:http://nginx.org/en/docs/njs/install.html
主要变化
nginx modules
- Change:删除 0.7.10 引入的 Fetch API 中对禁止 header 的特殊处理
- Change:删除自 0.5.0 以来在
http
模块中已被弃用的r.requestBody()
andr.responseBody()
方法 - Change:
http
模块在过滤时为r.internalRedirect()
抛出异常 - Feature:引入全局 nginx 属性——
ngx.build
,ngx.conf_file_path
,ngx.error_log_path
,ngx.prefix
,ngx.version
,ngx.version_number
和ngx.worker_id
- Feature:为 http 和 stream 引入
js_shared_dict_zone
指令,用于在 worker 进程之间声明共享字典 - Improvement:添加 compile-time 选项以禁用 njs 模块。例如,要禁用 libxslt 相关代码:
NJS_LIBXSLT=NO ./configure .. --add-module=/path/to/njs/module
-
Bugfix:修复在
http
模块中过滤时的r.status
setter出现的问题 -
Bugfix:修复
http
模块中 Location header 的设置问题
详情查看 Changelog。