Nginx配置域名反向代理MQTT 配置mqtt /ws /wss访问域名连接。

有时候我们想通过域名的方式来进行mqtt的连接。

首先在阿里云上安装mqtt服务器端。本文mqtt服务器端ip地址为: xx.xx.67.177

并配置mqtt监听端口 tcp : 1883 , http /ws 为 8083 

安装好之后下载mqttbox 工具进行测试连接。

一、使用TCP的方式验证mqtt服务器。

至此说明mqtt服务器 1883端口正常,并能通过mqtt客户端工具连接上。

二、使用ws 的方式验证mqtt服务器

下面讲使用nginx进行域名配置及反向代理。

准备 :申请一个域名,并解释到nginx 所在的机器上。

 一、配置ws 的域名反向代理.

mqtt_ws.conf 

map $http_upgrade $connection_upgrade {  
    default upgrade;  
    '' close;  
}  
upstream mqtt_ws_server {  
    server xx.xx.67.177:8083; #可以配置多个,作为高可用  
}  
server {  
    listen 80;  
    server_name dxxxxd.sxxxxt.com; #修改为自己的域名
    
    access_log  /wwwlogs/mqtt_ws.log;     #日志路径
    error_log /wwwlogs/mqtt_ws_err.log;   #错误日志路径
    location / {  
        proxy_pass http://mqtt_ws_server/mqtt;  #这里是否带/mqtt路径处决于你mqtt服务端部署
        proxy_http_version 1.1;  
        proxy_set_header Upgrade $http_upgrade;  
        proxy_set_header Connection "Upgrade";  
    }  
}

可以将conf进行include进去就好了。

使用mqttbox进行验证代理。

二、配置域名访问支持wss (wss  和ws 的区别,就当https 和http吧详细度娘)

mqtt_wss.conf

map $http_upgrade $connection_upgrade {  
    default upgrade;  
    '' close;  
}  
upstream mqtt_wss_server {  
    server xx.xxx.67.177:8083;   #可配多个高可用
}  
server {  
    listen 443;  
    server_name dxxxxd.sxxxxt.com;    #域名
    ssl_certificate "/opt/nginx/cert/sxxxxt.com.pem";      #要配证书
    ssl_certificate_key "/opt/nginx/cert/sxxxxt.com.key";  #要配证书key
        
    ssl_session_cache shared:SSL:1m;
    ssl_session_timeout  10m;
    ssl_ciphers HIGH:!aNULL:!MD5;
    ssl_prefer_server_ciphers on;
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
   
    access_log  /wwwlogs/mqtt_wss.log;    #日志
    error_log /wwwlogs/mqtt_wss_err.log;
    location / {  
        proxy_pass http://mqtt_wss_server/mqtt;  #反向代理的地址
        proxy_http_version 1.1;  
        proxy_set_header Upgrade $http_upgrade;  
        proxy_set_header Connection "Upgrade";  
    }  
}

验证

这里的443也可以不加

三、配置反向代理Tcp的方式。

     注意配置tcp 要使用nginx的stream服务节点。

mqtt_tcp.conf

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 /wwwlogs/tcp-access.log proxy;
    open_log_file_cache off;

    upstream mqtt_tcp_server {
        server xx.xx.67.177:1883;      #高可用均衡配置
        server xx.xx.123.132:1883;
}    

server {
        listen       18883;  #监听端口 也可以使用1883
        #listen      80;  #则使用mqtt://dxxxd.sxxxxt.com:80
        proxy_connect_timeout 150s;
        proxy_timeout 150s;
        proxy_pass mqtt_tcp_server;  #反向代理地址
        proxy_buffer_size 3M;
        tcp_nodelay on;

        
}

}

验证

 

验证结束。

至此已经可以通过域名进行mqtt/ws/wss 等访问了。

 

 

 

  • 7
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 16
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 16
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

边缘998

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值