The ngx_stream_js_module
module is used to implement handlers in njs — a subset of the JavaScript language.
This module is not built by default. Download and install instructions are available here.
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; } } }
The stream.js
file:
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 request var 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(); }
Syntax: | js_access function; |
---|---|
Default: | — |
Context: | stream , server |
Sets an njs function which will be called at the access phase.
Syntax: | js_filter function; |
---|---|
Default: | — |
Context: | stream , server |
Sets a data filter.
Syntax: | js_include file; |
---|---|
Default: | — |
Context: | stream |
Specifies a file that implements server and variable handlers in njs.
Syntax: | js_path
path; |
---|---|
Default: | — |
Context: | http |
This directive appeared in version 0.3.0.
Sets an additional path for njs modules.
Syntax: | js_preread function; |
---|---|
Default: | — |
Context: | stream , server |
Sets an njs function which will be called at the preread phase.
Syntax: | js_set
$variable function; |
---|---|
Default: | — |
Context: | stream |
Sets an njs function for the specified variable.
Each stream njs handler receives one argument, a stream session object.
© 2002-2019 Igor Sysoev
© 2011-2019 Nginx, Inc.
Licensed under the BSD License.
https://nginx.org/en/docs/stream/ngx_stream_js_module.html