js_fetch_protocols

js_fetch_protocols 指令设置在 NGINX JavaScript 上下文中用于获取数据的协议。

语法js_fetch_protocols protocol1 [protocol2 ...];
默认值none
上下文stream, stream server
参数1+

说明

js_fetch_protocols 指令指定 NGINX JavaScript (NJS) 将用于获取外部资源的协议。此指令在 NJS 脚本需要检索数据(例如来自 APIs 或其他 web 服务)的场景中特别相关。每个列出的协议在 NJS 运行时执行这些 fetch 操作时都是允许的,定义了客户端(在此上下文中为 NGINX)与上游服务器或外部 URL 交互的方式。

该指令支持多个参数,允许您指定一个或多个协议。常用协议包括 httphttpsws(WebSocket)。当 NJS 脚本尝试执行 fetch 操作时,它只会考虑 js_fetch_protocols 中指定的协议。这有助于通过限制可建立的连接类型来控制安全性和功能,确保符合安全策略和架构决策。

由于支持多种协议,用户可以微调配置以满足不同的运行需求。例如,如果某个部署只对外部服务使用安全连接,可以将指令限制为 httpswss,从而防止不安全协议的滥用。此外,保持列表精简有助于减少因不必要的协议暴露而带来的潜在攻击面。

配置示例

stream {
    server {
        listen 5000;

        js_fetch_protocols https http;
    }
}

确保后端服务支持所指定的协议,以避免 fetch 失败。

使用不受支持的协议可能导致 NJS 脚本出现意外行为或运行时错误。

← 返回所有指令