js_fetch_protocols
js_fetch_protocols 指令设置在 NGINX JavaScript 上下文中用于获取数据的协议。
NGINX njs dynamic modules
·
streamstream server
语法js_fetch_protocols protocol1 [protocol2 ...];
默认值none
上下文stream, stream server
参数1+
说明
js_fetch_protocols 指令指定 NGINX JavaScript (NJS) 将用于获取外部资源的协议。此指令在 NJS 脚本需要检索数据(例如来自 APIs 或其他 web 服务)的场景中特别相关。每个列出的协议在 NJS 运行时执行这些 fetch 操作时都是允许的,定义了客户端(在此上下文中为 NGINX)与上游服务器或外部 URL 交互的方式。
该指令支持多个参数,允许您指定一个或多个协议。常用协议包括 http、https 和 ws(WebSocket)。当 NJS 脚本尝试执行 fetch 操作时,它只会考虑 js_fetch_protocols 中指定的协议。这有助于通过限制可建立的连接类型来控制安全性和功能,确保符合安全策略和架构决策。
由于支持多种协议,用户可以微调配置以满足不同的运行需求。例如,如果某个部署只对外部服务使用安全连接,可以将指令限制为 https 和 wss,从而防止不安全协议的滥用。此外,保持列表精简有助于减少因不必要的协议暴露而带来的潜在攻击面。
配置示例
stream {
server {
listen 5000;
js_fetch_protocols https http;
}
}⚠
确保后端服务支持所指定的协议,以避免 fetch 失败。
⚠
使用不受支持的协议可能导致 NJS 脚本出现意外行为或运行时错误。