问题标签 [nginx-njs]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
140 浏览

javascript - 具有多个条件的 Javascript 正则表达式

我正在使用 Nginx njs 模块进行一些 url 修改。

我的用例是返回给定 uri 的重定向 uri。

URI 将如下所示:

我的正则表达式匹配上述 URI 如下 -

/books/(.*)|/books$

表达式的第一部分/books/(.*) 是匹配以下 URI:

表达式的第二部分/books$ 是匹配以下 URI:

我的目的地配置如下/ebooks/$1:这样上面的 URI 将被转换为:

Javascript代码:

上面的代码适用于以下 URI:

但对于 URI /books,它应该返回/ebooks/。但它在 . 末尾附加了一些不可打印的特殊字符/ebooks/

我认为它正在尝试$1用一些特殊字符替换。

如何避免在最后添加特殊字符?

0 投票
0 回答
416 浏览

node.js - 如何将 Nginx NJS 与本机 nodejs 模块和 webpack 一起使用?

有一个指南https://nginx.org/en/docs/njs/node_modules.html指南描述了如何将“本机”nodejs 模块与 njs 一起使用。

我按照指南进行操作,直到我不明白粗体字的含义:

请注意,在此示例中生成的代码未包装到函数中
,我们不需要显式调用它。结果在“dist”目录中:

$ cat dist/wp_out.js code.js > njs_dns_bundle.js

让我们在文件末尾调用我们的代码: <<<--- HERE

var b = set_buffer(global.dns);
控制台.log(b);

并使用节点执行它:

$节点./njs_dns_bundle_final.js

问题是我如何在 njs_dns_bundle_final.js 中包含/要求/导入 webpack 生成的 njs_dns_bundle.js,这是让我们在文件末尾调用我们的代码的名称,因为没有它我会收到错误:

我的代码.js:

我的 njs_dns_bundle_final.js:

我认为节点运行良好?!:

NJS 不会:

谢谢

0 投票
1 回答
347 浏览

nginx - nginx - njs - ngx_http_auth_request_module 如何向用户返回 302?

我正在使用 njs ngx_http_auth_request_module。

我有这样的js函数;

文档说“如果子请求返回 2xx 响应代码,则允许访问。如果它返回 401 或 403,则访问被拒绝并带有相应的错误代码。子请求返回的任何其他响应代码都被视为错误。” http://nginx.org/en/docs/http/ngx_http_auth_request_module.html

如果 subsequest 进入“else”块,我需要向用户返回 302。

有没有办法做到这一点?如果我设置 r.return(302),它会在浏览器中显示错误页面,如文档所述。

编辑:我的 nginx.conf

http://my-specific-url 返回

  • 200,如果 jwt cookie 有效
  • 302(带返回位置),如果 jwt cookie 无效