• 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 等访问了。

  • 相关阅读:
    Pollard rho模板
    GDKOI2018游记
    BZOJ2599: [IOI2011]Race
    Codeforces914E. Palindromes in a Tree
    可以删点的并查集
    本月题量 180122晚-180222午
    51nod1238 最小公倍数之和 V3
    51nod1237 最大公约数之和 V3
    hdu5608:function
    51nod1244 莫比乌斯函数之和
  • 原文地址:https://www.cnblogs.com/cheyunhua/p/16252379.html
Copyright © 2020-2023  润新知