当前位置:网站首页>使用域名转发mqtt协议,避坑指南
使用域名转发mqtt协议,避坑指南
2022-06-27 05:08:00 【猿小飞】
1.需求
我们需要通过域名的方式进行mqtt的链接。这样的好处就是当我们后台ip改变的时候,前端的设备能不受影响。
2.使用nginx进行转发
注意问题:配置反向代理TCP的方式,需要使用nginx的stream服务节点。该节点是和http结点是并列的。
使用的nginx的版本:1.23.0

版本的问题,是因为有些老版本还需要手动安装支持stream。所以如果我们使用了高版本,默认都是支持这些的。
2.1.nginx里的配置文件

我们直接在nginx.conf里配置,因为需要和http同节点。
完整的配置文件也贴一下:
stream {
log_format proxy '$remote_addr [$time_local] '
'$protocol $status $bytes_sent $bytes_received '
'$session_time "$upstream_addr" '
'"$upstream_bytes_sent" "$upstream_bytes_received" "$upstream_connect_time"';
access_log /var/log/nginx/mqtt_access.log proxy;
open_log_file_cache off;
upstream mqtt_tcp_server {
server xxx.xxx.xxx.xxx:1883; #这里要改自己的ip地址
}
server {
listen 1883; #监听端口 也可以使用1883
proxy_connect_timeout 150s;
proxy_timeout 150s;
proxy_pass mqtt_tcp_server; #反向代理地址
proxy_buffer_size 3M;
tcp_nodelay on;
}
}
3.配置完之后,重启nginx不生效
netstat -tunpl
使用该命令,可以查看到我们监听1883端口是否已经起来。刚开始异常的时候,因为使用nginx -t,发现语法没有问题,在使用nginx -s reload命令启动的时候。也没有异常,但最终发现1883端口还是没有起来。我们去查看nginx的error日志,最后发现了一个错误。
2022/06/24 14:48:40 [emerg] 11768#11768: bind() to 0.0.0.0:1883 failed (13: Permission denied)3.1.这个问题,实际上是SELinux 开放和关闭端口问题;
查看所有开放端口:
semanage port -l查看某个端口:
查看1883端口是否已经开启来:
semanage port -l | grep 1883
已经启动后的结果。
查看selinux针对http的策略开放的端口:
semanage port -l | grep http_port_t 添加端口:
重点来了,如果上面的结果是没有开放出来,则需要我们手动添加端口进去:
semanage port -a -t http_port_t -p tcp 1883http策略添加开放1883端口。
关闭http策略的某个端口:
最后,如果在一些时候,我们不需要开启这个端口的时候,则可以关闭该端口:
semanage port -d -t http_port_t -p tcp 1883边栏推荐
猜你喜欢

2022-06-26: what does the following golang code output? A:true; B:false; C: Compilation error. package main import “fmt“ func main() { type

Deep dive kotlin synergy (XV): Test kotlin synergy

日志收集系统

Microservice system design -- API gateway service design

机械转码日记【17】模板,STL简介

RTP 发送PS流工具(已经开源)

微服务系统设计——服务注册与发现和配置设计

Remapping (STM32)
![[C language] keyword supplement](/img/c5/171e0d8537d9f09c688e31b290ad65.jpg)
[C language] keyword supplement

微服务系统设计——API 网关服务设计
随机推荐
渗透测试-文件上传/下载/包含
Vue学习笔记(五)Vue2页面跳转问题 | vue-router路由概念、分类与使用 | 编程式路由导航 | 路由组件的缓存 | 5种路由导航守卫 | 嵌套路由 | Vue2项目的打包与部署
【B站UP DR_CAN学习笔记】Kalman滤波3
The most detailed download tutorial of MySQL
[C language] keyword supplement
深潜Kotlin协程(十五):测试 Kotlin 协程
Some articles about component packaging and my experience
Microservice system design -- microservice invocation design
微服务系统设计——微服务监控与系统资源监控设计
Reading graph augmentations to learn graph representations (lg2ar)
Acwing's 57th weekly match -- BC question is very good
流媒体协议初探(MPEG2-TS、RTSP、RTP、RTCP、SDP、RTMP、HLS、HDS、HSS、MPEG-DASH)
Redis high availability cluster (sentry, cluster)
012 C language foundation: C array
014 C language foundation: C string
016 C语言基础:C语言枚举类型
笔记本电脑没有WiFi选项 解决办法
Advanced Mathematics (Seventh Edition) Tongji University exercises 1-10 personal solutions
微服务系统设计——消息缓存服务设计
Redis高可用集群(哨兵、集群)