防止NGINX缓冲包
我需要使用NGINX代理修改MQTT发布包的主题。我创建了一个由js_过滤器调用的njs函数防止NGINX缓冲包,nginx,proxy,nginx-reverse-proxy,Nginx,Proxy,Nginx Reverse Proxy,我需要使用NGINX代理修改MQTT发布包的主题。我创建了一个由js_过滤器调用的njs函数 function updateTopic(s) { s.log("buf: " + s.buffer.toString('hex')); if (!s.fromUpstream) { if(s.buffer.indexOf("topic") != -1){ s.buffer = s.buffer.replace("topic
function updateTopic(s) {
s.log("buf: " + s.buffer.toString('hex'));
if (!s.fromUpstream) {
if(s.buffer.indexOf("topic") != -1){
s.buffer = s.buffer.replace("topic", "mopic").toBytes();
s.log("new buffer: " + s.buffer.toString('hex'));
}
}
return s.OK;
}
返回:
buf:300F0005746F7069636D657373631676533
新缓冲区:300F00056D6F7069636D657373631676533
此函数可正确更新s.buffer,但在收到其他类型的包之前,不会传输包。当接收到订阅、断开连接、ping消息时,所有缓冲消息将立即传输
如果此函数不替换包,则会立即传输
在更改s.buffer后是否应该做一些特殊的操作?结果是由于一个bug,该bug将在以后的版本中修复