世界即时:nginx加载js(利用njs模块在nginx配置中引入js脚本)

2023-06-30 05:09:20 来源: 互联网

下面介绍njs模块的特点和用法。

安装NJS模块时,nginx的版本应该大于1.9.11,因为只有从这个版本开始才支持load_module指令。

(资料图片)


【资料图】

方法一:动态加载NJS模块注意:不同版本的nginx需要相应版本的NJS模块。

Put the file ngx_http_js_module.so in the module directory of nginx root directory, and add the import module Load _ ModuleModules/NGX _ HTTP _ JS _ Module.so in nginx.conf; load _ module modules/ngx _ stream _ js _ module . so; Method 2: Add module download source code https://hg.nginx.org/njs/? at compile time. This is a good example. 58660.68686868661

仓库是在mercurial中管理的,下载源代码需要hg命令。

编译Hg clone http://hg.nginx.org/njsnginx.时添加了以下配置

. /configure-add-module=NJS/NJS/Nginx Path 2 Characteristics of NJS module running environment

NJS模块不运行一个Nodejs,所以nginx js只能像lua模块一样是nginx的一个中间件,不能独立成为一个完整的后台服务。

Njs没有使用v8解析引擎,但是nginx定制了一个基于ECMAScript语言规范的解析引擎,所以支持的语法和特性与标准不同。

1.在每次请求时创建一个运行时环境,并在请求结束时销毁它。

节点运行时启动的虚拟机是内存常驻的,虚拟机运行时会自动完成内存的垃圾回收。

NJS将在每次请求时创建一个新的虚拟机并分配内存,并在请求结束时销毁虚拟机并释放内存。

2.非阻塞代码执行

Njs采用事件驱动模型来调度NJS运行环境。当NJS执行阻塞操作(如读取网络数据或发出外部子请求)时,Nginx会暂停当前NJS VM的执行,并在事件完成时重新调度它。

因此,NJS的代码可以用简单的线性方式编写。

3.仅支持一些ECAMA标准语法。

NJS 基于ECMAScript 5.1 规范, 并支持ECMAScript 6 中的部分函数

支持的语法列表https://nginx.org/en/docs/NJS/compatibility.html?_ga=2.91935000.301589667.1638621670-451035464.1638621670

4. 集成请求处理过程

Nginx 对请求的处理包含多个阶段. Nginx的指令通常在某个指定的阶运行对请求进行处理. Nginx 的模块也正是利用这个能力, 来调试或修改一个请求.

NJS 模块也是通过指令的形式, 实现在特定的阶段运行js 代码逻辑.

三NJS 模块支持的指令及对应的处理阶段 处理阶段 HTTP 模块 Stream 模块 Access Authentication and access control auth_request and js_content js_access Pre-read Read/write payload N/A js_preread Filter Read/write response during proxy js_body_filter js_header_filter js_filter Content Send response to client js_content N/A Log/Variables Evaluated on demand js_set js_set 四NJS 的简单用法示例以下示例用js 定义一种log 的格式

在Nginx 配置目录下创建一个logging.js 文件

//文件位置: [nginx根目录]/conf/logging.js//文件内容: 解析请求, 打印出所有的请求头function logAllHeaders(r) { var log=`${r.variables.time_iso8601} client=${r.remoteAddress} method=${r.method} uri=${r.uri} status=${r.status}`; r.rawHeadersIn.forEach(h=log +=` in.${h[0]}=${h[1]}`); r.rawHeadersOut.forEach(h=log +=` out.${h[0]}=${h[1]}`); return log;}export default { logAllHeaders }# nginx 的配置文件http { js_import logging.js; # js_import 加载一个js 脚本, 该文件放在nginx 配置文件的目录下. js 的文件名会作为该模块的命名空间. 引用函数时可以通过[文件名].[函数名]的方式来引用 js_set $log_all_headers logging.logAllHeaders; # js_set 把js文件中的函数logAllHeaders 的输出保存到变量$log_all_headers. log_format kvpairs $log_all_headers; # 自定义一种日志格式kvpairs server { listen 80; access_log /var/log/nginx/access.log kvpairs; # 设置该规则下的日志格式为上面自定义的格式 root /usr/share/nginx/html; }}五NJS 支持的指令参考文档

NJS 支持的指令并不多. 要实现复杂的功能需要与Nginx 的其他指令结合一起使用.

以下介绍几个常用的指令

js_body_filter 修改response 的body

Syntax:js_body_filter function | module.function [buffer_type=string | buffer];Default:—Context:location, limit_exceptThis directive appeared in version 0.5.2.示例

/*** 处理response body 的函数* @param { object } r - http 对象* @param { buffer_type } data - 请求的body 的数据* @param { boolean } flags - 是否是最后一个数据块*/function filter(r, data, flags) { r.sendBuffer(data.toLowerCase(), flags);}js_content 处理请求的返回

Syntax:js_content function | module.function;Default:—Context:location, limit_except示例

http { # 引入js 模块 js_import http.js; server { listen 80; location /content { # 通过js_content 指令指定要执行的js 函数 js_content http.content; } }}//http.js 文件function content(r) { r.status=200; r.headersOut["Content-Type"]="text/plain; charset=utf-8"; r.headersOut["Content-Length"]=12; r.sendHeader(); r.send("I am content"); r.finish()}export default { content }js_header_filter 修改返回的请求头

Syntax:js_header_filter function | module.function;Default:—Context:location, limit_exceptThis directive appeared in version 0.5.1.js_import 导入一个js 文件

Syntax:js_import module.js | export_name from module.js;Default:—Context:httpThis directive appeared in version 0.4.0.示例

http { # 引入js 模块. 文件名会作为该模块的命名空间. 引用函数时可以通过[文件名].[函数名]的方式来引用 js_import http.js; server { listen 80; location /content { # 通过js_content 指令指定要执行的js 函数 js_content http.content; } }}js_set 设置变量

Syntax:js_set $variable function | module.function;Default:—Context:http该指令引用的函数会在变量第一次被引用时执行. 并且函数内仅支持同步的操作

本文[高级伪原创标题]到此分享完毕,希望对大家有所帮助。

标签:

世界即时:nginx加载js(利用njs模块在nginx配置中引入js脚本)

下面介绍njs模块的特点和用法。安装NJS模块时,nginx的版本应该大于1 9

06-30 05:09:20

原来姐弟恋也可以这样甜 这么油腻的姐弟恋

hello大家好,我是城乡经济网小晟来为大家解答以上问题,原来姐弟恋也

06-30 02:15:26

网贷举报平台开通_网贷举报平台|每日视讯

1、支付宝里的城市服务里面有举报电话在最下面。本文到此分享完毕,希

06-30 00:37:53

有助睡眠的轻音乐(有助睡眠的轻音乐有哪些)

来为大家解答以上问题。有助睡眠的轻音乐,有助睡眠的轻音乐有哪些很多

06-29 22:39:53

gl小说现代都市-gl小说现代

1、爱上负心人凤凰花1 2部等你说爱我之冰山总裁等你说爱我之面瘫王VS火

06-29 21:40:15

鼓岭故事回响不绝 见证中美民间友好交流 全球视点

新华社福州6月29日电题:鼓岭故事回响不绝见证中美民间友好交流新华社

06-29 20:43:48

国安VS海港首发:武磊奥斯卡联手出击 于大宝出战

北京时间6月29日19点35分,中超第13轮第二比赛日拉开战幕,在一场焦点

06-29 19:44:40

热消息:今日怎样申请六位数qq号(怎么样申请5位6位7位QQ号码)

大家好,小胜来为大家解答以上问题。怎样申请六位数qq号,怎么样申请5

06-29 19:05:16

今日快看!太惊险!小皮卡后车厢挤了12个人!

​6月25日,海南澄迈。交警在巡查中查获一辆违法载人的轻型多用途货车

06-29 17:48:47

大宗交易:韦尔股份成交2088.08万元,折价1.00%(06-29)

2023年6月29日,韦尔股份发生了1笔大宗交易,总成交万股,成交金额万元

06-29 17:13:59

天天日报丨外媒:世卫组织癌症研究机构称阿斯巴甜甜味剂可能致癌

【外媒:世卫组织癌症研究机构称阿斯巴甜甜味剂可能致癌】据两位知情人

06-29 16:46:17

当前观点:海南椰岛易主海口国资,重归后就能打翻身仗?

(图源:海南椰岛官网)时隔七年,海南椰岛(600238 SH)重回海口国资

06-29 16:21:42

安徽属于北方还是南方呢(安徽属于北方还是南方)

来为大家解答以上的问题。安徽属于北方还是南方呢,安徽属于北方还是南

06-29 15:50:37

因制动程序存在缺陷 大众集团日本公司将召回超1.7万辆汽车-世界新动态

据日本共同社29日消息,大众汽车集团日本公司当天向日本国土交通省报备

06-29 15:49:39

百度空间去哪了(baidukongjian)-环球今亮点

来为大家解答以上问题,百度空间去哪了,baidukongjian很多人还不知道

06-29 15:02:59

当前热门:金腰带卫冕战,张伟丽霸气宣言:胜人者有力,自胜者强

8月20日,作为UFC女子草量级冠军,张伟丽将在波士顿迎来挑战者阿曼达·

06-29 14:50:19

焦点!2023黑龙江大庆市肇源县事业单位招聘人员拟加分情况公示通知公告

按照《2023年肇源县事业单位公开招聘工作人员公告》规定,经审核,拟对

06-29 13:48:40

丰田5月全球销量增长10.1% 连续4个月同比增长-当前看点

(原标题:丰田5月全球销量增长10 1%)证券时报e公司

06-29 13:24:52

书法分为哪几种书体类型_书法分为哪几种书体 热推荐

1、通常来说书法是篆、隶、行、草、楷五种书体。2、你说的宋体是古代印

06-29 12:55:18

环球最新:文化和旅游部:2022年全国旅游服务质量提升工作取得成效

文化和旅游部:2022年全国旅游服务质量提升工作取得成效

06-29 12:03:57

福城街道九龙山社区:把征兵政策送到家门口

为切实做好2023年征兵工作,圆满完成征兵任务,近日,福城街道九龙山社

06-29 11:53:29

【环球热闻】闵行装修垃圾清运 闵行装修

1、▶辨别正规的装修公司装修公司资质辨别怎么看装修公司的资质呢?正规

06-29 11:19:32

教育部提示:高校招生录取期间谨防受骗

2023年普通高校招生录取工作即将开始。教育部会同有关部门,结合近年来

06-29 10:51:11

涉及印度,上汽集团紧急澄清-世界观焦点

6月26日,上汽集团发布澄清说明称,近日自媒体报道的“上汽MG印度公司

06-29 10:35:34

【天天新视野】永茂泰6月29日盘中涨幅达5%

以下是永茂泰在北京时间6月29日10:17分盘口异动快照:6月29日,永茂泰

06-29 10:07:34

城域网的英文缩写是什么_城域网的英文缩写是-当前观察

1、局域网(LocalAreaNetwork,LAN)城域网(MetropolitanAreaNetwork)是

06-29 10:03:17

【热闻】制作小程序商城需要多少钱

在移动互联网时代,小程序商城成为了许多企业开展电子商务的一个重要渠

06-29 09:15:19

开户银行地址变更说明_银行变更地址需要什么资料

1、银行没有关系的,只要是工商部门和税务部门需要新地址的证明材料。本

06-29 08:44:39

世界速递!南京电梯门女主绝世容貌曝光,女主走路踉跄,网友高呼书记威武

后有如今,南京师范高校副书记,与情人在电梯亲热被曝光,惹众议。近日

06-29 08:01:08

早报:枪迷狂欢夜!阿森纳官宣哈弗茨,赖斯即将下树

【阿森纳引援】枪手今夏首签!官方:阿森纳签下24岁哈弗茨,总价6500万

06-29 07:36:30

每日讯息!小学毕业典礼上的感谢信_小学毕业典礼上的讲话

1、小学毕业学生讲演稿风风雨雨,朝朝暮暮;花开花谢,潮起潮落。2、在

06-29 06:48:15

【聚看点】范军的老婆资料简介_范军的老婆

1、庞晓戈,1974年11月12日出生于河南洛阳偃师市,中国内地节目主持人

06-29 06:07:58

中远海发(02866)派发2022年度末期股息每股0.087元获股东批准

智通财经APP讯中远海发60186602866发布公告建议分派截至2022年12月31日

06-29 04:55:24

环球动态:结婚证照片攻略(结婚证上的照片要怎么拍才能好看)

大家好,小乐来为大家解答以上的问题。结婚证照片攻略,结婚证上的照片

06-29 03:10:22

梵高的作品和简介_梵高的作品有哪些简介介绍

对于梵高的作品有哪些这个问题感兴趣的朋友应该很多,这个也是目前大家

06-29 01:04:22

全球简讯:开头是什么银行的卡号是哪个城市的(6230开头是什么银行)

来为大家解答以上的问题。开头是什么银行的卡号是哪个城市的,6230开头

06-28 22:55:05

万年县港边村党员义务指导高考毕业生填报大学志愿

“分数优先遵循自愿一次投档”,这是我给到你们的12个字方针。高考毕业

06-28 22:05:36

每日时讯!三峡集团刚刚完成吊装的这一装置,投产后将成全球最大海上风电机组

长江日报大武汉客户端6月28日讯海上吹来一阵风,清洁绿电源源来。6月28

06-28 21:28:48

“维权”竟也二进宫,浪潮信息再被高呼“退钱”,游资嗅到机会,章盟主逆势买入近3亿元_全球播报

受美国芯片限制消息影响,6月28日AI概念持续下跌,AI核心标的浪潮信息

06-28 21:04:16

写长城的作文400字以上 写长城的作文 全球即时看

1、著名的万里长城,像一条矫健的巨龙,蜿蜒曲折,蟠伏在中华大地上。2

06-28 20:20:08

森鹰窗业哈双基地四期项目奠基 助力公司深化主业布局 环球简讯

6月28日,森鹰窗业(301227)哈双基地四期项目暨哈尔滨年产15万平方米定

06-28 19:36:36

东海渔民首登国际航行船舶开展“互登互学”

新民晚报讯(通讯员冯杨虹李帅记者任天宝)“这还是我第一次登上这样的

06-28 18:55:47

环球看点!2023广州芳村区养老金如何调整的?企退人员养老金领多少?

截止目前2023年调整退休人员基本养老金的方案已经公布,但是2023年养老

06-28 18:31:15

投行预计特斯拉二季度在国内市场交付15.3万辆Model 3和Y 全球热议

6月28日消息,据外媒报道,二季度临近尾声,特斯拉这一季度电动汽车的

06-28 18:06:40

立讯精密: 关于部分股票期权注销完成的公告|环球热议

立讯精密:关于部分股票期权注销完成的公告

06-28 17:31:16

金圣圭 豆瓣(金圣圭) 视点

来为大家解答以上的问题。金圣圭豆瓣,金圣圭这个很多人还不知道,现在

06-28 17:07:32

银企对接再发力 为民营企业送上“真金白银”|世界头条

资金链是企业的生命线。对很多民营企业来说,“融资贵”,“融资难”问

06-28 16:49:46

周鸿祎:大模型进入千家万户就能引发工业革命

新浪科技讯6月28日下午消息,360集团创始人周鸿祎在“GPT产业联盟成立

06-28 16:19:40

杭氧股份联合天赐材料共设气体公司 注册资本9000万

企查查APP显示,近日,九江杭氧天赐气体有限公司成立,法定代表人为林

06-28 16:00:09

济高天安智谷建设60%股权挂牌转让,底价601万元

乐居财经彦杰6月28日消息,据全国产权行业信息化综合服务平台,济南济

06-28 15:21:36

原来姐弟恋也可以这样甜 这么油腻的姐弟恋
网贷举报平台开通_网贷举报平台|每日视讯
有助睡眠的轻音乐(有助睡眠的轻音乐有哪些)
gl小说现代都市-gl小说现代
鼓岭故事回响不绝 见证中美民间友好交流 全球视点
国安VS海港首发:武磊奥斯卡联手出击 于大宝出战
热消息:今日怎样申请六位数qq号(怎么样申请5位6位7位QQ号码)
今日快看!太惊险!小皮卡后车厢挤了12个人!
大宗交易:韦尔股份成交2088.08万元,折价1.00%(06-29)
天天日报丨外媒:世卫组织癌症研究机构称阿斯巴甜甜味剂可能致癌
当前观点:海南椰岛易主海口国资,重归后就能打翻身仗?
安徽属于北方还是南方呢(安徽属于北方还是南方)
因制动程序存在缺陷 大众集团日本公司将召回超1.7万辆汽车-世界新动态
百度空间去哪了(baidukongjian)-环球今亮点
当前热门:金腰带卫冕战,张伟丽霸气宣言:胜人者有力,自胜者强
焦点!2023黑龙江大庆市肇源县事业单位招聘人员拟加分情况公示通知公告
丰田5月全球销量增长10.1% 连续4个月同比增长-当前看点
书法分为哪几种书体类型_书法分为哪几种书体 热推荐
环球最新:文化和旅游部:2022年全国旅游服务质量提升工作取得成效
福城街道九龙山社区:把征兵政策送到家门口
【环球热闻】闵行装修垃圾清运 闵行装修
教育部提示:高校招生录取期间谨防受骗
涉及印度,上汽集团紧急澄清-世界观焦点
【天天新视野】永茂泰6月29日盘中涨幅达5%
城域网的英文缩写是什么_城域网的英文缩写是-当前观察
【热闻】制作小程序商城需要多少钱
开户银行地址变更说明_银行变更地址需要什么资料
世界速递!南京电梯门女主绝世容貌曝光,女主走路踉跄,网友高呼书记威武
早报:枪迷狂欢夜!阿森纳官宣哈弗茨,赖斯即将下树
每日讯息!小学毕业典礼上的感谢信_小学毕业典礼上的讲话
【聚看点】范军的老婆资料简介_范军的老婆
中远海发(02866)派发2022年度末期股息每股0.087元获股东批准
环球动态:结婚证照片攻略(结婚证上的照片要怎么拍才能好看)
梵高的作品和简介_梵高的作品有哪些简介介绍
全球简讯:开头是什么银行的卡号是哪个城市的(6230开头是什么银行)
万年县港边村党员义务指导高考毕业生填报大学志愿
每日时讯!三峡集团刚刚完成吊装的这一装置,投产后将成全球最大海上风电机组
“维权”竟也二进宫,浪潮信息再被高呼“退钱”,游资嗅到机会,章盟主逆势买入近3亿元_全球播报
写长城的作文400字以上 写长城的作文 全球即时看
森鹰窗业哈双基地四期项目奠基 助力公司深化主业布局 环球简讯
东海渔民首登国际航行船舶开展“互登互学”
环球看点!2023广州芳村区养老金如何调整的?企退人员养老金领多少?
投行预计特斯拉二季度在国内市场交付15.3万辆Model 3和Y 全球热议
立讯精密: 关于部分股票期权注销完成的公告|环球热议
金圣圭 豆瓣(金圣圭) 视点
银企对接再发力 为民营企业送上“真金白银”|世界头条
周鸿祎:大模型进入千家万户就能引发工业革命
杭氧股份联合天赐材料共设气体公司 注册资本9000万
济高天安智谷建设60%股权挂牌转让,底价601万元
世界速讯:什么是神经管缺陷症状_什么是神经管缺陷
X 广告
资讯
X 广告

Copyright ©  2015-2023 今日畜牧网版权所有  备案号:沪ICP备2023005074号-40   联系邮箱:5 85 59 73 @qq.com