让 Nginx 负责 TLS 加密后端 Mosquitto 保持明文既省事又安全。✅ 推荐做法Nginx 终结 TLS再把解密后的 MQTT 流量转发给 Mosquitto。适用场景客户端走wss://或mqtts://连接 Nginx443/8883 端口Nginx 解密后转发到 Mosquitto 的明文端口如 1883 或 WebSocket 端口。好处证书统一在 Nginx 管理不用在 Mosquitto 单独配证书还能顺带用上 Nginx 的连接数限制、IP 黑名单等防护。注意点Nginx 必须开启proxy_http_version 1.1和Upgrade头否则 MQTT 心跳会被截断导致频繁掉线如果走 TCP 代理非 WebSocket要用stream模块而不是http模块。⚠️ 一个关键前提这种架构只保护了客户端到 Nginx 这一段。如果 Mosquitto 和 Nginx 在同一台内网机器上问题不大LS 加密。Mosquitto x86_64 本地编译 aarch64 交叉编译完整步骤环境说明宿主Ubuntu 22.04x86_64交叉工具链buildroot 产出aarch64-buildroot-linux-gnuMosquitto 版本2.0.x2.0.18 推荐需要 OpenSSL3.0 开启 TLS可以关闭 WITH_TLS 去除 openssl 依赖解决你刚才链接报错编译系统CMakemosquitto 2.x 推荐 CMake不再主推 makefile⚠️重点WITH_TLSON → 依赖 OpenSSLWITH_TLSOFF → 无 openssl 依赖适合内网 MQTT规避你前面libssl.so.3缺失问题前置依赖宿主 Ubuntu x86_64 统一安装前置依赖宿主 Ubuntu x86_64 统一安装sudo apt update sudo apt install cmake gcc g libssl-dev libcjson-dev git pkg-configlibssl-dev 是 x86_64 本地编译 openssl 依赖交叉编译的 OpenSSL 由 buildroot 工具链 sysroot 提供。第一部分x86_64 本地编译 MosquittoUbuntu 主机1. 获取源码git clone https://github.com/eclipse/mosquitto.git cd mosquitto git checkout v2.0.18 mkdir build-x86_64 cd build-x86_642. CMake 配置2 种选项二选一选项 1启用 TLS需要 opensslcmake .. \ -DCMAKE_INSTALL_PREFIX/opt/mosquitto/build-x86 \ -DWITH_TLSON \ -DWITH_TLS_PSKON \ -DWITH_THREADINGON \ -DWITH_CJSONOFF选项 2关闭 TLS无 openssl 依赖调试推荐不会出现 ssl 符号报错cmake .. \ -DCMAKE_INSTALL_PREFIX/opt/mosquitto/build-x86 \ -DWITH_TLSOFF \ -DWITH_THREADINGON \ -DWITH_CJSONOFF3. 编译 安装make -j$(nproc) sudo make install4. 验证# 查看编译产出 ls /opt/mosquitto/build-x86/lib/ # 查看依赖 ldd /opt/mosquitto/build-x86/lib/libmosquitto.so第二部分aarch64 交叉编译 Mosquittobuildroot aarch64 工具链前提你已经拥有 buildroot 生成的完整 aarch64 SDK路径/opt/aarch64-buildroot-linux-gnu_sdk-buildroot/工具链前缀aarch64-buildroot-linux-gnu-步骤 1准备交叉编译工具链文件 toolchain-aarch64.cmake在 mosquitto 源码根目录新建toolchain-aarch64.cmakeset(CMAKE_SYSTEM_NAME Linux) set(CMAKE_SYSTEM_PROCESSOR aarch64) # buildroot sdk根目录 set(SDK_ROOT /opt/aarch64-buildroot-linux-gnu_sdk-buildroot) # 编译器完整路径 set(CMAKE_C_COMPILER ${SDK_ROOT}/bin/aarch64-buildroot-linux-gnu-gcc) set(CMAKE_CXX_COMPILER ${SDK_ROOT}/bin/aarch64-buildroot-linux-gnu-g) set(CMAKE_AR ${SDK_ROOT}/bin/aarch64-buildroot-linux-gnu-ar) set(CMAKE_RANLIB ${SDK_ROOT}/bin/aarch64-buildroot-linux-gnu-ranlib) # sysroot路径 set(CMAKE_SYSROOT ${SDK_ROOT}/aarch64-buildroot-linux-gnu/sysroot) set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER) set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY) set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY) set(CMAKE_FIND_ROOT_PATH_MODE_PACKAGE ONLY)第二步清理旧构建缓存重新 cmakecd mosquitto rm -rf build-aarch64 mkdir build-aarch64 cd build-aarch64继续使用WITH_TLSOFF规避 OpenSSL3 依赖解决你最开始链接报错cmake .. \ -DCMAKE_TOOLCHAIN_FILE../toolchain-aarch64.cmake \ -DCMAKE_INSTALL_PREFIX/opt/mosquitto/build-aarch64 \ -DWITH_TLSOFF \ -DWITH_THREADINGON \ -DWITH_CJSONOFFmake -j$(nproc) sudo make install第三步校验编译产物# 检查架构必须输出 AArch64 aarch64-buildroot-linux-gnu-readelf -h /opt/mosquitto/build-aarch64/lib/libmosquitto.so # 检查依赖WITH_TLSOFF 不会出现 libssl.so.3 aarch64-buildroot-linux-gnu-readelf -d /opt/mosquitto/build-aarch64/lib/libmosquitto.so备选方案使用 buildroot 自带 environment‑setup 脚本不手写 toolchainbuildroot sdk 自带环境脚本environment-setup可以不用手写 toolchain 文件cd /opt/aarch64-buildroot-linux-gnu_sdk-buildroot source environment-setup cd mosquitto rm -rf build-aarch64 mkdir build-aarch64 cd build-aarch64 cmake .. \ -DCMAKE_INSTALL_PREFIX/opt/mosquitto/build-aarch64 \ -DWITH_TLSOFF \ -DWITH_THREADINGON \ -DWITH_CJSONOFF make -j$(nproc) sudo make installsource 之后$CC$CXX$CFLAGS$LDFLAGS全部自动配置好适合不想维护 toolchain 文件的场景Buildroot。常见踩坑不要自己拼接-gnubuildroot sdk bin 目录下直接就是aarch64-buildroot-linux-gnu-gcc。每次修改 toolchain 文件必须删除 build 目录全部缓存否则 cmake 继续读取旧缓存。确认 SDK 没有解压损坏source environment-setup无报错。ls /opt/aarch64-buildroot-linux-gnu_sdk-buildroot/bin/ ls /opt/aarch64-buildroot-linux-gnu_sdk-buildroot/aarch64-buildroot-linux-gnu/若要开启TLS则开启 TLS要求 buildroot sysroot 内必须存在 libssl.so.3 /libcrypto.so.3否则编译出来的 libmosquitto.so 链接失败cmake .. \ -DCMAKE_TOOLCHAIN_FILE../toolchain-aarch64.cmake \ -DCMAKE_INSTALL_PREFIX/opt/mosquitto/build-aarch64 \ -DWITH_TLSON \ -DWITH_TLS_PSKON \ -DWITH_THREADINGON \ -DWITH_CJSONOFF集成到Qt 工程CMake以xxx项目为例# 引入mosquitto头文件与库目录 include_directories(/opt/mosquitto/build-aarch64/include) link_directories(/opt/mosquitto/build-aarch64/lib) target_link_libraries(PTU_Manager mosquitto cjson Qt5::Core Qt5::Network pthread rt dl )✅关闭 TLS 版本不需要-lssl -lcrypto》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》若TLS不要sqlite不要websockets不要Openssl不要最简单的编译安装mosquitto的流程如下:1、先编译安装x86_64环境下的cjson编译产物存放到/opt/cjson/build-x86目录下2、再编译安装aarch64交叉编译环境下的cjson编译产物存放到/opt/cjson/build-aarch64目录下3、编译安装x86_64环境下的mosquitto:rm -rf * cmake .. \ -DWITH_TLSOFF \ -DWITH_WEBSOCKETSOFF \ -DWITH_TESTSOFF \ -DWITH_DLTOFF \ -DWITH_PLUGIN_PERSIST_SQLITEOFF \ -DWITH_ARGON2OFF \ -DCJSON_INCLUDE_DIR/opt/cjson/build-x86/include \ -DCJSON_LIBRARY/opt/cjson/build-x86/lib/libcjson.so \ -DCMAKE_INSTALL_PREFIX/opt/mosquitto/build-x86 make -j$(nproc) sudo make install4、编译安装aarch64交叉编译环境下的mosquittorm -rf * cmake .. \ -DCMAKE_C_COMPILERaarch64-linux-gnu-gcc \ -DCMAKE_CXX_COMPILERaarch64-linux-gnu-g \ -DWITH_TLSOFF \ -DWITH_WEBSOCKETSOFF \ -DWITH_TESTSOFF \ -DWITH_DLTOFF \ -DWITH_PLUGIN_PERSIST_SQLITEOFF \ -DWITH_ARGON2OFF \ -DCJSON_INCLUDE_DIR/opt/cjson/build-aarch64/include \ -DCJSON_LIBRARY/opt/cjson/build-aarch64/lib/libcjson.so \ -DCMAKE_INSTALL_PREFIX/opt/mosquitto/build-aarch64 make -j$(nproc) sudo make install
企业数字化 ERP 产品动态
相关推荐
Freedeck云存档同步指南:跨设备自动备份与一键恢复,进度再也不怕丢 【免费下载链接】Freedeck 学习版游戏一站式平台 项目地址: https://gitcode.com/gh_mirrors/fre/Freedeck 点击查看 免费下载 Freedeck 是一款专为 Steam Deck 打造的 Decky Loader 插件,除游戏库管理与下载外,最实用的功能之一就是云存档同… · 2026/11/5 1:50:39
霞鹜文楷 LXGW WenKai 免费商用开源楷体中文字体:6 个文件选择与安装避坑指南 霞鹜文楷 LXGW WenKai 免费商用开源楷体中文字体:6 个文件选择与安装避坑指南 【免费下载链接】LxgwWenKai An open-source Chinese font derived from Fontworks Klee One. 一款开源中文字体,基于 FONTWORKS 出品字体 Klee One 衍生。 项目地址: htt… · 2026/11/5 1:49:39
【MATLAB例程12】永磁同步电机基于增广无迹卡尔曼滤波的未知负载转矩在线观测 原创代码,包运行成功 文章目录程序简介算法原理与实现仿真场景与结果分析程序特点与适用方向运行结果MATLAB源代码程序简介
本程序基于MATLAB搭建永磁同步电机(Permanent Magnet Synchronous Motor,PMSM)仿真模型,采用… · 2026/11/5 1:49:39
混合高斯模型(GMM)聚类算法原理与实战应用 1. 混合高斯模型聚类实战指南在数据分析领域,聚类算法一直扮演着重要角色。不同于K-means这类硬聚类方法,混合高斯模型(GMM)通过概率分布的方式描述数据,能够更灵活地处理复杂的数据结构。最近我在一个客户细分项目中成… · 2026/11/5 2:38:01
高并发投票系统架构设计与运营策略解析 1. 项目背景与活动解析"58万票!星特杯投票进入冲刺阶段"这个标题背后反映的是一个典型的线上投票竞赛活动。这类活动在互联网时代已经成为品牌营销、用户互动和社群运营的常见手段。从标题中的"58万票"这个数据量级来看,这显然是一个… · 2026/11/5 2:38:01
NoSQL数据库核心类型与应用场景解析 1. NoSQL数据库概述:为什么它成为现代架构的必选项十年前,我们还在为MySQL的单表千万级数据发愁,为分库分表方案争论不休。如今,互联网应用的流量和数据量早已今非昔比——双十一的订单峰值达到每秒58.3万笔,抖音日活用… · 2026/11/5 2:38:01
ArkTS性能优化实战:从原理到HarmonyOS应用 1. 为什么你的ArkTS项目跑得慢?作为一名在HarmonyOS生态深耕多年的开发者,我见过太多团队把ArkTS简单地当作TypeScript的方言来写。直到性能问题爆发时,他们才意识到:ArkTS和TS虽然语法相似,但底层运行机制天差地别。最… · 2026/11/5 2:38:01
MIPS 54条多周期CPU:教学级处理器的慢动作解析 简介:本资源是面向计算机专业本科生的MIPS多周期CPU硬件设计实践项目,聚焦《计算机组成原理》课程核心能力训练,解决从指令集理解、数据通路构建到FPGA板级实现的全流程实践难点。压缩包共539个文件,26.94MB,涵盖66个V… · 2026/11/5 2:38:01
GitHub Copilot Agent模式提升开发效率实战 1. 项目概述作为一名长期使用VSCode进行开发的程序员,我发现GitHub Copilot的Agent模式正在彻底改变我们的编码方式。这个工具集不仅仅是简单的代码补全,它更像是一位24小时待命的编程助手,能够理解上下文、预测需求,甚至主动提出… · 2026/11/5 2:37:01
双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/4 3:16:49
STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/4 6:59:29
DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/4 7:02:38
多智能体协作系统架构设计与实践优化 1. 多智能体协作系统的时代背景2017年Transformer架构的诞生彻底改变了人工智能的发展轨迹。当行业还沉浸在单一大模型带来的性能突破时,Anthropic的研究团队已经将目光投向了更前沿的领域——如何让多个智能体通过协作产生超越单体能力的系统智能。这就像交响乐团中… · 2026/11/5 0:00:39
大模型系统性入门实战指南:从原理到部署微调的全链路路线 提到大模型的系统性入门,我先说个结论:这事真不难,难的是资料太散、路线太多,今天这个框架明天那个工具,新人很容易在“收藏夹吃灰”和“教程看到一半放弃”之间反复横跳。市面上关于大模型的内容少说有几十万篇&#… · 2026/11/5 0:00:39
鸿蒙文件系统沙箱机制解析与开发实践 1. 鸿蒙文件系统沙箱机制深度解析作为一名从Android转向鸿蒙开发的工程师,我深刻体会到文件系统访问是迁移过程中最先遇到的"拦路虎"。在Android上运行良好的文件读写代码,在鸿蒙真机环境却频频出现文件写入后神秘消失或直接抛出权限拒绝错误的… · 2026/11/5 0:00:39
双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/4 3:16:49
STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/4 6:59:29
DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/4 7:02:38