【资料图】
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。