【问题标题】:Nginx JS module stream variableNginx JS 模块流变量
【发布时间】:2019-02-08 18:04:43
【问题描述】:

我使用 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 )

其中记录:null

谢谢,

克里斯

【问题讨论】:

    标签: nginx


    【解决方案1】:

    在源代码中搜索后,我发现保存传入端口号的变量是

    s.variables.server_port
    

    所以上面的脚本如下:

    #ngin.js
    
    function filterfn(s){
    
        s.on('upload', function(data,flags){
                s.send(s.variables.server_port + ',' + data, flags);
                return;
        });
    }
    

    我希望有人觉得这很有用。

    【讨论】:

      猜你喜欢
      • 2020-06-25
      • 2018-04-11
      • 1970-01-01
      • 2017-02-12
      • 1970-01-01
      • 2013-07-13
      • 2022-06-29
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多