点赞
评论
收藏
分享
举报
IoT 场景-04:使用NGINX Plus对MQTT的客户端连接进行访问控制
发表于2020-12-19 16:22

浏览 1.7k

文章标签

由于NGINX Plus 在MQTT 客户端与Broker 的交互过程中处于一个核心代理的位置,我们可以很容易的在其原生的代理功能基础之上加入安全访问控制功能。


0x01 为什么需要访问控制

对于一些MQTT 的客户端,不管是消息的发布者还是订阅者,都有可能会使用贪婪模式,频繁的与MQTT Broker进行通信,并发布或获取大量数据。此时,MQTT Broker的通信信道会被这种客户端应用占用,导致服务降级。遇到这种类型的客户端,由于MQTT Broker原生并没有很好地限制机制,从而需要借助在Nginx Plus的代理上面,进行配置,识别并限制过度的数据访问。


0x02 如何进行访问控制

使用Nginx Plus 进行访问控制很简单,和HTTP协议的访问控制类似。


0x03 访问日志处理

使用Nginx Plus 还可以自定义日志格式,通过与告警平台和自动化平台对接,可以有效识别异常客户端的通信,可以进行自动化的IP封禁以及限连和限流操作。



至此,我们4节NGINX Plus在IoT场景中的应用已经告一段段落,希望大家喜欢本次的分享。


参考:https://dzone.com/articles/mqtt-load-balancing-and-session-persistence-with-nginx-plus

已修改于2023-03-05 04:14
本作品系原创
创作不易,留下一份鼓励
yuefeng

暂无个人介绍

关注



写下您的评论
发表评论
全部评论(0)

按点赞数排序

按时间排序

关于作者
yuefeng
这家伙很懒还未留下介绍~
6
文章
0
问答
1
粉丝
相关文章
原文来自:https://www.nginx.com/blog/nginx-app-protect-1-0-released/进行数字化转型的公司有明确的业务需求。其中包括改善现代业务应用程序的客户体验,采用敏捷实践以超越市场竞争对手,以及利用市场优势来推动新的收入来源。支持这些工作的是新的应用程序体系结构,这些体系结构可提高开发效率并结合了容器,微服务和API。对于现代应用程序,敏捷性和上市时间至关重要。安全通常是次要的考虑因素,或者被完全忽略。为什么?传统应用程序的安全控制并不总是能很好地映射到业务需求。例如,通常由SecOps团队配置和操作的那种复杂的Web应用程序防火墙(WAF)通常不太适合由DevOps团队支持特定业务线部署的敏捷应用程序。结果可能是安全性不足或配置错误,上市时间延迟以及不良的用户体验。推出NGINXAppProtectNGINXAppProtect是一种新的应用程序安全解决方案,它将先进的F5WAF技术的功效与NGINXPlus的敏捷性和性能相结合。该解决方案在NGINXPlus上本地运行,并解决了现代DevOps环境面临的一些最困难的挑战:将
点赞 4
浏览 1.7k
众所周知,Nginx最常见的传统场景是Web服务器,HTTP反向代理以及负载均衡,此外,它在物联网的技术领域,也可以发挥同样可观的作用。本节我们会重点讨论使用Nginx实现物联网消息组件MQTTBroker的高可用。MQTT流量负载均衡带有健康检查的高可用实践基于MQTTClientID的会话保持0x01MQTT原理首先我们来熟悉一下MQTT协议。MQTT(MessageQueuingTelemetry Transport,消息队列遥测传输协议),是一种基于发布/订阅(publish/subscribe)模式的"轻量级"通讯协议,该协议构建于TCP/IP协议上,由IBM在1999年发布。MQTT最大优点在于,可以以极少的代码和有限的带宽,为连接远程设备提供实时可靠的消息服务。作为一种低开销、低带宽占用的即时通讯协议,使其在物联网、小型设备、移动应用等方面有较广泛的应用。MQTT协议原理1MQTT协议实现方式实现MQTT协议需要客户端和服务器端通讯完成,在通讯过程中,MQTT协议中有三种身份:发布者(Publish)、代理(Broker)(服务器)、订阅者(S
点赞 1
浏览 2.9k
上一节我们介绍过了通过Nginx实现MQTT会话的负载均衡,那么如何解决每个MQTTBroker在消息分发的时候,只能收到一半信息的情况呢?此时,我们就需要借助NginxPlus的高级功能:NginxJavaScript,来定制基于ClientID的会话保持机制,将客户端与某个MQTTBroker进行会话保持,保障其信息的完整性,除非该MQTTBroker出现故障。"Round Robinloadbalancingisaneffectivemechanismfordistributingclientconnectionsacrossagroupofservers.However,thereareseveralreasonswhyitisnotidealforMQTTconnections."0x01NginxJavaScript会话保持代码mqtt.js提取MQTTClientId varclient_messages=1;2varclient_id_str="-";34
点赞 2
浏览 1.7k