需要做一个MQTT Server的Proxy,现在定义的在向MQTT Server
Server发送消息时,新增一个校验字符串在TCP
TCP报文中

现在通过preread_by_lua_block、ngx.req.socket能够解析到校验字符串
但是无法去掉该校验字符串 导致mqtt的协议被更改

        lua_add_variable $proxy;
    
        server {
            listen 18883;
            proxy_connect_timeout 1s;
    
            preread_by_lua_block {
                local sock = ngx.req.socket(true)
                local data, err, partial = sock:receive(6)
                if not data then
                        ngx.say("failed to read a line: ", err)
                        return
                end
                local r = string.sub(data, 7, len)
                ngx.log(ngx.INFO, "prefix is: ", data)
                ngx.log(ngx.INFO, "r is: ", r)
                ngx.var.proxy= "mq1883"
            }
    
    
            proxy_pass $proxy;
    
        }

      我想知道有没有办法修改tcp报文中的数据,然后重新设置到buffer
      buffer中

        没有,目前应该只能在lua中实现代理,或者开发开发自己特制的[preread_by_lua_block|nginx模块]

          4 months later

          很遗憾,只能在content_by_lua_block里面获取数据,修改后,然后通过cosocket 建立与后端连接。。。

            Write a Reply...