需要做一个MQTT Server的Proxy,现在定义的在向MQTT Server
Server发送消息时,新增一个校验字符串在TCP
TCP报文中
现在通过preread_by_lua_block、ngx.req.socket能够解析到校验字符串
但是无法去掉该校验字符串 导致mqtt的协议被更改
需要做一个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模块]
很遗憾,只能在content_by_lua_block里面获取数据,修改后,然后通过cosocket 建立与后端连接。。。