js_preread

`js_preread` 指令允许在 stream 处理之前执行 JavaScript 代码。

语法js_preread script;
默认值none
上下文stream, stream server
参数1

说明

js_preread 指令是 NGINX JavaScript 模块的一部分,提供了一种在 stream 处理之前灵活执行 JavaScript 的方式。它在处理诸如协议协商(例如判断是否将传入连接视为 HTTP、WebSocket 等)或收集可用于后续处理决策的特定连接数据等任务时尤其有用。该指令可以接受单个 JavaScript 表达式,该表达式会在服务器首次接受连接的初始阶段执行。

当连接到来时,NGINX 会调用 js_preread 中指定的 JavaScript。该 JavaScript 函数可以执行多种操作,例如检查连接元数据或基于动态因素确定转发逻辑。执行环境提供对连接属性的访问,并且可以在任何实际数据传输开始之前调整行为。这使其成为根据传入流量特征进行动态配置的强大工具。

另外,一个常见用例是定义与 stream 交互的特定处理器,允许开发者将他们的 JavaScript 解决方案无缝集成到 NGINX 的 stream 处理工作流程中。此功能在增强 NGINX 可扩展性的同时,仍为在 stream 上处理的协议保留高性能。

配置示例

stream {
    server {
        listen 12345;
        js_preread my_handler.js;
    }
}

确保 JavaScript 代码符合 NJS 语法;代码中的错误可能会导致流无法正常工作。

请记住,js_preread 只能在 streamstream server 上下文中使用,不能在 HTTP 上下文中使用。

← 返回所有指令