ngx_stream_js_module

  • 示例配置
  • 指令
    • js_access
    • js_filter
    • js_include
    • js_preread
    • js_set
  • 会话对象属性

ngx_stream_js_module 模块用于在 njs 中实现处理程序 —— 这是 JavaScript 语言的一个子集。

默认情况下不构建此模块。可在此处下载和安装说明。

此示例适用于 njs 0.2.4 及更高版本。对于 njs 0.2.3 及更早版本,请使用此示例。

示例配置

load_module modules/ngx_stream_js_module.so;
...stream {js_include stream.js;js_set $bar bar;js_set $req_line req_line;server {listen 12345;js_preread preread;return     $req_line;}server {listen 12346;js_access  access;proxy_pass 127.0.0.1:8000;js_filter  header_inject;}
}http {server {listen 8000;location / {return 200 $http_foo\n;}}
}

stream.js 内容:

var line = '';function bar(s) {var v = s.variables;s.log("hello from bar() handler!");return "bar-var" + v.remote_port + "; pid=" + v.pid;
}function preread(s) {s.on('upload', function (data, flags) {var n = data.indexOf('\n');if (n != -1) {line = data.substr(0, n);s.done();}});
}function req_line(s) {return line;
}// Read HTTP request line.
// Collect bytes in 'req' until
// request line is read.
// Injects HTTP header into a client's requestvar my_header =  'Foo: foo';
function header_inject(s) {var req = '';s.on('upload', function(data, flags) {req += data;var n = req.search('\n');if (n != -1) {var rest = req.substr(n + 1);req = req.substr(0, n + 1);s.send(req + my_header + '\r\n' + rest, flags);s.off('upload');}});
}function access(s) {if (s.remoteAddress.match('^192.*')) {s.abort();return;}s.allow();
}

指令

js_access

- 说明
语法 js_access function;
默认 ——
上下文 stream、server

设置一个将在 access 阶段调用的 njs 函数。

js_filter

- 说明
语法 js_filter function;
默认 ——
上下文 stream、server

设置一个数据过滤器。

js_include

- 说明
语法 js_include file;
默认 ——
上下文 stream

指定一个使用 njs 实现服务器和变量处理程序的文件。

js_preread

- 说明
语法 js_preread function;
默认 ——
上下文 stream、server

设置一个将在 preread 阶段调用的 njs 函数。

js_set

- 说明
语法 js_set function;
默认 ——
上下文 stream

设置一个用于指定变量的 njs 函数。

会话对象属性

每一个流 njs 处理程序都会接收一个参数,一个流会话对象。

原文档

http://nginx.org/en/docs/stream/ngx_stream_js_module.html


ngx_stream_keyval_module

  • 示例配置
  • 指令
    • keyval
    • keyval_zone

ngx_stream_keyval_module 模块(1.13.7)可用于创建变量,变量的值从由 API 管理的键值对中获取。

此模块为商业订阅部分。

示例配置

http {server {...location /api {api write=on;}}
}stream {keyval_zone zone=one:32k state=one.keyval;keyval      $ssl_server_name $name zone=one;server {listen              12345 ssl;proxy_pass          $name;ssl_certificate     /usr/local/nginx/conf/cert.pem;ssl_certificate_key /usr/local/nginx/conf/cert.key;}
}

指令

keyval

- 说明
语法 keyval key $variable zone=name;
默认 ——
上下文 stream

创建一个新的 $variable,其值在键值数据库中通过 key 查找。匹配规则由 keyval_zone 指令的 type 参数定义。数据库存储在 zone 参数指定的共享内存区域中。

keyval_zone

- 说明
语法 keyval_zone zone=name:size [state=file] [timeout=time] [type=string\|ip\|prefix] [sync];
默认 ——
上下文 stream

设置维持键值数据库的共享内存区域的名称(name)和大小(size)。键值对通过 API 进行管理。

可选的 state 参数指定一个文件(file),该文件以 JSON 格式保存键值数据库的当前状态,并在重新启动 nginx 时保持不变。

可选的 timeout 参数(1.15.0)设置将键值对从区域中删除的时间。

可选的 type 参数(1.17.1)激活一个额外的索引,该索引针对某种类型的键匹配进行了优化,匹配规则在计算键值 $variable 时定义。

索引存储在相同的共享存储区中,因此需要额外的存储。

  • type=string

    默认配置,不启用索引;使用记录 key 和一个搜索 key 的完全匹配来执行变量查找

  • type=ip

    搜索 key 是 IPv4 或 IPv6 地址或 CIDR 范围的文字表示;要匹配记录 key,搜索 key 必须属于记录 key 指定的子网或与 IP 地址完全匹配

  • type=prefix

    使用记录 key 和搜索 key 的前缀匹配(1.17.5)执行变量查找;要与记录 key 匹配,记录 key 必须是搜索 key 的前缀

可选的 sync 参数(1.15.0)启用共享内存区域同步。同步要求设置超时(timeout)参数。

如果启用了同步,则将仅在目标群集节点上执行键值对(无论是一个还是全部)的删除操作。经过 timeout 时间后,将删除其他群集节点上相同的键值对。

原文档

  • http://nginx.org/en/docs/stream/ngx_stream_keyval_module.html

ngx_stream_limit_conn_module

  • 示例配置
  • 指令
    • limit_conn
    • limit_conn_log_level
    • limit_conn_zone

ngx_stream_limit_conn_module 模块(1.9.3)用于限制每个定义的 key 的连接数,特别是来自单个 IP 地址的连接数。

示例配置

stream {limit_conn_zone $binary_remote_addr zone=addr:10m;...server {...limit_conn           addr 1;limit_conn_log_level error;}
}

指令

limit_conn

- 说明
语法 limit_conn zone number;
默认 ——
上下文 stream、server

设置共享内存区域和给定 key 的最大允许连接数。超过此限制时,服务器将关闭连接。例如,以下指令:

limit_conn_zone $binary_remote_addr zone=addr:10m;server {...limit_conn addr 1;
}

每次只允许一个 IP 地址一个连接。

如果指定了几个 limit_conn 指令,则将应用所有已配置的限制。

当且仅当当前级别没有 limit_conn 指令时,指令才从上级继承。

limit_conn_log_level

- 说明
语法 limit_conn_log_level info | notice | warn | error;
默认 limit_conn_log_level error;
上下文 stream、server

为服务器限制连接数设置日志记录级别。

limit_conn_zone

- 说明
语法 limit_conn_zone key zone=name:size;
默认 ——
上下文 stream

为指定的共享内存区域设置参数,该区域将保留各种 key 的状态。尤其是状态包括当前的连接数。key 可以包含文本、变量及其组合(1.11.2)。不计算 key 为空的连接。用法示例:

limit_conn_zone $binary_remote_addr zone=addr:10m;

上述中,key 是一个 $binary_remote_addr 变量设置的客户端 IP 地址。$binary_remote_addr 的大小为 IPv4 地址的 4 个字节或 IPv6 地址的 16 个字节。存储状态在 32 位平台上总是占用 32 或 64 字节,在 64 位平台上占用 64 字节。一兆字节区域可以保留大约 32,000 个 32 字节状态或大约 16,000 个 64 字节状态。如果区域存储耗尽,服务器将关闭连接。

原文档

http://nginx.org/en/docs/stream/ngx_stream_limit_conn_module.html

Nginx官方文档(四十七)【ngx_stream_js_module|ngx_stream_keyval_module|ngx_stream_limit_conn_module】相关推荐

  1. Nginx官方文档(四十六)【ngx_stream_access_module|ngx_stream_geo_module|ngx_stream_geoip_module】

    ngx_stream_access_module 示例配置 指令 allow deny ngx_stream_access_module 模块(1.9.2)允许对某些客户端地址限制访问. 示例配置 s ...

  2. Nginx官方文档(三十四)【ngx_http_ssl_module】

    ngx_http_ssi_module 示例配置 指令 ssl ssl_buffer_size ssl_certificate ssl_certificate_key ssl_ciphers ssl_ ...

  3. Nginx官方文档(十一)【HTTP之ngx_http_core_module】

    ngx_http_core_module 指令 absolute_redirect aio aio_write alias chunked_transfer_encoding client_body_ ...

  4. Nginx官方文档(十五)【HTTP之ngx_http_dav_module|ngx_http_empty_gif_module|ngx_http_f4f_module】

    ngx_http_dav_module 示例配置 指令 dav_access dav_methods create_full_put_path min_delete_depth ngx_http_da ...

  5. Nginx官方文档(三十二)【ngx_http_slice_module|ngx_http_spdy_module】

    ngx_http_slice_module 示例配置 指令 slice 内嵌变量 ngx_http_slice_module 模块(1.9.8)是一个过滤器,它将请求拆分为子请求,每个子请求都返回一定 ...

  6. Adopt Open JDK官方文档(四)基于虚拟机的编译环境

    4.基于虚拟机的编译环境 准备工作 编译你自己的虚拟机 编译你自己的轻量级虚拟机 在Host 与 Guest VM 之间共享文件 适用于 OpenJDK 8 的Vagrant Puppet 环境 4. ...

  7. ABP官方文档(四十四)【后台作业和后台工人】

    7.1 ABP后台服务 - 后台作业和后台工人 7.1.1 简介 ABP提供了后台作业和后台工人,来执行应用程序中的后台线程的某些任务. 7.1.2 后台作业 由于各种各样的原因,你需要后台作业以队列 ...

  8. ABP官方文档(四十五)【集成Hangfire】

    7.2 ABP后台服务 - 集成Hangfire 7.2.1 简介 Hangfire是一个综合性的后台作业管理工具.你可以用Hangfire来替换ABP中默认实现的后台作业管理者.你可以对Hangfi ...

  9. ABP官方文档(四十九)【集成EntityFramework】

    9.1 ABP基础设施层 - 集成Entity Framework ABP可以与任何ORM框架协同工作,它内置了对EntityFramework的集成支持.本文将介绍如何在ABP中使用EntityFr ...

最新文章

  1. Linux的ELF格式分析
  2. 13KB的代码能做什么?有些人可是弄出了一个完整的游戏!
  3. DirectX 高级着色语言HLSL入门
  4. Email 正则验证
  5. mysql replication health is not ok_MySQL的高可用——MHA
  6. NSIS设置桌面快捷方式的图标
  7. java jdbc dbcp连接SQL Server
  8. AndroidStudio安卓原生开发_UI高级_Shape的使用_虚线_直线_矩形_渐变_径向渐变_线性渐变_扫描渐变---Android原生开发工作笔记122
  9. Windows环境下查看Java进程ID,找到java程序对应的进程pid
  10. maven 排除某个类_java-如何从Maven依赖项中排除某些程序包(在JAR中)?
  11. Android Studio for Experts(Android Dev Summit2015)
  12. 《Effective Python 2nd》 读书笔记——列表与字典
  13. cr2格式缩略图不显示_cr2缩略图补丁 佳能相机RAW文件CR2原片格式缩略图显示补丁- 游侠下载站...
  14. cpu空载50度,大热天,cpu都上50度了! -
  15. element 如何使用自定义icon图标
  16. Mac终端常用命令及报错处理
  17. 基于Python3.6实现Java版murmurhash算法
  18. mac pro m1:安装dump文件内存分析工具——MAT
  19. 【Interview###】华为、中兴嵌入式(C)笔试题
  20. Java解决上台阶问题

热门文章

  1. 关于苏宁易购的好坏与网购的心酸苦逼史,有同感的请继续顶起
  2. Markdown富文本编辑器(数学公式教程)
  3. 6.JUC-共享模型之工具
  4. 实验九:采用异步方式实现文件读/写
  5. windows那么多图标都在哪里?
  6. 高通(Qualcomm)LK源码深度分析(三)
  7. android视频编码格式,Android,ios平台上x264编码实时视频参数设置与优化 | 贝壳博客...
  8. Sin City --《罪恶之城》
  9. onvif 修改摄像头参数
  10. Q3亏损收窄预计Q4季度实现盈利,趣头条走上盈利分水岭靠什么?