百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术资源 > 正文

NGINX + JavaScript = 灵活高效的中间件解决方案

off999 2025-03-04 13:36 31 浏览 0 评论

在现代 web 开发中,中间件的灵活性和功能性至关重要。通过使用 JavaScript,可以为 NGINX 注入中间件功能,赋予其更强大的能力。

NGINX JavaScript(简称 NJS)是一个动态模块,允许用户通过脚本与 NGINX 的执行模型进行交互。

NJS 模块的功能

使用 NJS 模块,您可以实现以下功能:

  1. 复杂的访问控制和安全检查 :在请求到达上游服务器之前,可以添加复杂的访问控制和安全检查,以确保系统的安全性。
  2. 操作响应标头 :灵活地修改响应标头,适应不同的需求和场景。
  3. 编写异步内容处理程序 :编写灵活的异步内容处理程序、过滤器等,以处理请求和响应。

示例:创建简单的请求拦截器

例如,可以编写一个 hello.js 文件,拦截传入请求并返回一条消息给客户端:

function hello(r) {
   r.return(200, "Hello DHub!\n");
}

export default {hello};

要在特定情况下导入 JavaScript 文件并执行函数,您需要在 NGINX 配置中进行如下修改:

http {
    js_include hello.js;
    server {
        location / {
            js_content hello.hello;
        }
    }
}

JavaScript 代码的执行

您可能会好奇,NGINX 是如何执行这段 JavaScript 代码的?

答案是,NGINX 自带一个嵌入式 JavaScript 引擎,经过定制以满足 NGINX 的独特需求。NJS 使用的 JavaScript 是符合 ES5(ECMAScript 5.1 严格变种)的子集,并支持一些 ES6 及更高版本的扩展。

工作机制

NJS 通过允许在 NGINX 配置文件中引入和执行 JavaScript 代码,扩展了 NGINX 的功能。

其工作流程如下:

  1. 配置加载:在 NGINX 的配置文件中,通过 load_module 指令加载 NJS 模块。
  2. JavaScript 文件的引入:通过 js_path 指令设置 JavaScript 文件的路径,并使用 js_import 指令引入相应的 JavaScript 文件。
  3. 函数调用:在处理请求时,使用 js_content 指令调用 JavaScript 中定义的函数,并返回相应的 HTTP 响应。

需要注意的是,您不应期望 NJS 具备 Node.js 类似的功能,也不支持复杂的服务器端代码执行或库功能。此外,NJS 不是要取代 Lua 脚本,Lua 仍然是为 NGINX 编写中间件代码的最流行方式。

NJS 更像是为那些不熟悉 Lua 的开发者提供的替代方案。

安装 NJS

您可以通过从源代码构建 NJS,或更简单地使用软件包形式来安装:

sudo apt install nginx-module-njs

安装完软件包后,您需要使用 load_module 指令加载 NJS 动态模块:

load_module modulesngx_http_js_module.so;

然后,可以像本文开头展示的那样使用这些代码。此外,您也可以参考 NGINX JavaScript 示例,以便更好地入门。

项目地址:
https://github.com/nginx/njs

结论

NJS 为扩展 NGINX 的功能提供了一种更加友好的开发方式。

随着 NGINX 的持续进化,NJS 将为开发者提供更多灵活性与可能性,使中间件的编写变得更简便高效。

通过 NJS,您不仅能够保持 NGINX 的高性能,还能灵活地添加复杂的业务逻辑和处理能力。

相关推荐

windows8模拟器(国内版)(win8模拟器安卓版下载)

雷电模拟器能在win8系统运行,1、官网下载雷电模拟器,双击安装包进入安装界面。2、点击“自定义安装”修改安装路径,点击“浏览”选择好要安装的路径,默认勾选“已同意”,最后点击“立即安装”。...

win10安装专业版还是家庭版(win10安装专业版还是家庭版好)

从Win10家庭版和专业版对比来看,Win10专业版要比家庭版功能更强大一些,不过价格更贵。另外Win10专业版的一系列Win10增强技术对于普通用户也基本用不到,多了也显得系统不那么精简,因此普通个...

win10系统保护不见了(win10系统保护打不开怎么办)

1、启动计算机,启动到Windows10开机LOGO时就按住电源键强制关机,重复强制关机3次!2、重复步骤3次左右启动后出现“自动修复”界面,我们点击高级选项进入;3、接下来会到选择一个选项界面...

新手如何重装win8(怎么重新装系统win8)

要想重装回win8.1系统,首先你需要一个win8.1的系统安装盘,然后把你电脑的系统盘格式化一下,或者把你的win10系统删除了,再把win8.1系统安装盘插到电脑上,进行系统安装,等电脑安装系统完...

磁盘分区工具软件(硬盘分区工具软件)

如果说最安全的那就用电脑自带的吧,右键我的电脑,找到管理,然后进去磁盘管理,然后找到目前的一个磁盘,右键压缩卷,输入压缩空间就是你想要的一个盘的大小(1G=1024MB),然后压缩,然后找到你压缩出来...

ftp手机客户端(ftp手机客户端存文件)

要想实现FTP文件传输,必须在相连的两端都装有支持FTP协议的软件,装在您的电脑上的叫FTP客户端软件,装在另一端服务器上的叫做FTP服务器端软件。  客户端FTP软件使用方法很简单,启动后首先要与...

原版xp系统镜像(原版xp系统镜像怎么设置)

msdnitellyou又可以上了,那里有。  制作需要的软件  在开始进行制作之前,我们首先需要下载几个软件,启动光盘制作工具:EasyBoot,UltraISO以及用来对制作好的ISO镜像进行测...

office2007密钥 office2016(office2007ultimate密钥)

word2016激活密钥有两种类型:永久激活码和KMS期限激活密钥。其中,永久激活密钥可以使用批量授权版永久激活密钥进行激活,如所示;而KMS期限激活密钥需要使用KMS客户端密钥进行激活,如所示。另外...

windows10系统启动盘制作(windows10启动盘制作教程)

Windows10系统更改启动磁盘的方法如下1、按快捷键Win+R,调出命令窗口2、输入msconfig,点【确定】3、在系统配置中,选择【引导】菜单4、选择要默认启动的磁盘,点【设置为默认值】,...

方正电脑怎么重装系统

购买一张系统盘,然后启动电脑,将购买的系统盘插入电脑光驱中,等待光驱读取系统盘后,点击安装系统,即可自动安装,等待安装完毕,电脑会自动重启,重新启动后,电脑的系统就安装完毕,可以使用了一、准备需要的软...

qq邮箱怎么写才正确
qq邮箱怎么写才正确

步骤/方式1一般默认的QQ邮箱格式是:QQ号码@qq.com,即QQ账号+@qq.com后缀步骤/方式2若要发送邮件,也要在对方的qq帐号末尾加上@qq.com1.每个人在注册QQ时都会有关联的一个邮箱,它的格式就是“QQ号码@qq.com...

2025-12-21 18:51 off999

电脑怎么看配置信息
电脑怎么看配置信息

要查看Windows电脑的配置信息,可以通过按下Win键+R,然后在弹出的运行对话框中输入“dxdiag”并按回车键打开DirectX诊断工具,可以查看有关处理器、内存、显卡等硬件信息。另外,还可以右键点击“此电脑”,选择“属性”来查看...

2025-12-21 18:03 off999

mpeg是什么格式(mpeg是什么格式和mp4的区别)

是视频格式,是电脑视频文件的一种,相对其它视频文件格式而言,mpeg格式占的存储空间相对比较小,那么像素也就相对比较低,图像也没有其它格式那么高清,不过一般情况下已经满足正常的使用。好多视频文件都是采...

电脑参数配置怎么选(电脑参数配置怎么选择)

1、CPU,这个主要取决于频率和二级缓存,三级缓存,核心数量。频率越高、二级缓存越大,三级缓存越大,核心越多,运行速度越快。速度越快的CPU只有三级缓存影响响应速度。2、内存,内存的存取速度取决于接口...

windows7字体(Windows7字体库在哪)

win7系统默认中文字体是微软雅黑字体1、首先我们先打开个性化2、然后我们打开“窗口颜色”3、然后我们点击“项目”里的桌面,选择“已选定的项目”4、下面就可以改字体,还有字体的颜色、大小5、然后点击“...

取消回复欢迎 发表评论: