nginx JavaScript 模块

njs 是一个 nginx 模块,它通过以下方式扩展服务器的功能 JavaScript 脚本,支持创建自定义 服务器端逻辑更多

使用案例

  • njs 中的复杂访问控制和安全检查 在请求到达上游服务器之前
  • 作响应标头
  • 编写灵活的异步内容处理程序和过滤器

有关更多 njs 使用案例,请参阅示例

基本 HTTP 示例

要在 nginx 中使用 njs:

  • 安装 NJS 脚本语言

  • 创建一个 njs 脚本文件,例如 . 有关 njs 属性和方法的列表,请参阅参考http.js

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

  • 在文件中,启用 ngx_http_js_module 模块 并指定 js_import 指令 替换为脚本文件:nginx.confhttp.js

    load_module modules/ngx_http_js_module.so;
    
    events {}
    
    http {
        js_import http.js;
    
        server {
            listen 8000;
    
            location / {
                js_content http.hello;
            }
        }
    }
    

还有一个独立的命令行实用程序 可以独立于 nginx 用于 NJS 开发和调试。

经过测试的作系统和平台

  • FreeBSD / amd64;
  • Linux / x86、amd64、arm64、ppc64el;
  • Solaris 11 / amd64;
  • macOS / x86_64;

在 nginx.conf 2018 上的演示