我将NGINX用作反向代理,在发送到上游服务器之前,我需要将原始传入端口注入到实际数据包(TCP / UDP)有效负载中。我正在尝试使用NGINX的JS流模块(ngx_stream_js_module)来实现这一点。
以下是配置文件:
#nginx.conf
stream {
js_include ngin.js;
server {
listen 2007;
listen [::]:2007 udp;
js_filter filterfn;
proxy_pass ais_listeners;
}
upstream ais_listeners {
server localhost:1111;
}
}
和JS文件:
#ngin.js
function filterfn(s){
var streamVars = s.variables;
var j = JSON.stringify(streamVars );
s.log(j);
s.on('upload', function(data,flags){
s.send(streamVars.port + ',' + data, flags);
});
}
streamVars.port当然没有定义。
数据被注入到流中,但我设法使用的唯一变量是:
s.remote_port
和
s.pid
在搜索的过程中,我找不到可用流变量的引用。我也尝试使用以下命令记录它们:
var j = JSON.stringify(streamVars )
记录的内容:空
谢谢
克里斯
答案 0 :(得分:0)
在搜索源代码后,我发现保存传入端口号的变量是
s.variables.server_port
因此上述脚本的内容如下:
#ngin.js
function filterfn(s){
s.on('upload', function(data,flags){
s.send(s.variables.server_port + ',' + data, flags);
return;
});
}
我希望有人觉得这有用。