You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过Nginx njs模块初始化变量?请求/jstest无结果的解决方法

问题解决:Nginx njs模块变量初始化无返回结果的修复

问题原因

当前配置中,return指令属于重写阶段,执行优先级高于js_content所在的内容处理阶段。这意味着return 200 $testVariable会在njs函数sub执行前就直接返回响应,此时$testVariable还未被赋值,所以返回空内容。

修改方案

方案一:在njs函数中直接返回响应

适合直接通过njs生成响应内容的场景:

  1. 修改testnjs.js,让函数直接返回响应:
function sub(r) {
    // 直接返回状态码200和目标内容
    r.return(200, "CONTENT");
}
  1. 修改default.conf的/jstest location,移除多余的return指令:
location /jstest {
    js_content testnjs.sub;
}

方案二:用js_set预设置变量后返回

适合需要在Nginx配置中复用变量值的场景:

  1. 修改default.conf,用js_set定义变量赋值逻辑:
location /jstest {
    js_set $testVariable testnjs.getTestValue;
    return 200 $testVariable;
}
  1. 修改testnjs.js,编写返回变量值的函数:
function getTestValue(r) {
    return "CONTENT";
}

验证

修改完成后重启Nginx,再次请求/jstest即可得到预期的CONTENT响应内容。

内容的提问来源于stack exchange,提问作者Seong hyeon Baek

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.28 23:18:14