参考:https://www.cnblogs.com/succour/p/6305574.html

  EMQ官方文档:https://docs.emqx.io/broker/v3/cn/

  一,系统环境及软件选择

  系统环境查看

  软件版本选择

EMQ X Broker 3.2.1
Nginx 1.12.0

  二,软件安装与配置

  下载EMQ

https://www.emqx.io/downloads/broker/v3.2.1/emqx-centos7-v3.2.1.x86_64.rpm

  安装

rpm -ivh emqx-centos7-v3.2.1.x86_64.rpm

  启动

systemctl start emqx
systemctl enable emqx

  配置文件

/etc/emqx/emqx.conf

  其他保存默认修改一下两行配置证书(ssl证书可以去阿里云申请免费的证书)

listener.wss.external.keyfile = /etc/emqx/certs/key.pem
listener.wss.external.certfile = /etc/emqx/certs/cert.pem

  重启

systemctl restart emqx

  证书测试登录管理页面

http://IP:18083/#/websocket

  默认用户名密码为admin public可以通过以下命令修改

emqx_ctl admins passwd admin password

  测试(必须使用域名不能使用IP,在没有设置nginx反向代理的时候可以直接设置本机host指向ip为emq主机进行测试)

  nginx反向代理配置

  nginx安装不详述

  增加一个server配置文件内容如下

server {
#listen 8084 ssl backlog=2048;
listen 8084;
ssl on;
server_name www.xxx.com;
error_log /opt/log/emqxerror.log;
access_log /opt/log/emqxaccess.log;
client_max_body_size 100M;
ssl_certificate /opt/ssl/cert.pem;
ssl_certificate_key /opt/ssl/key.pem;
ssl_session_cache shared:SSL:1m;
ssl_session_timeout 100m;
ssl_prefer_server_ciphers on;
ssl_protocols TLSv1.2 TLSv1.1 TLSv1;
ssl_ciphers "EECDH+ECDSA+AESGCM EECDH+aRSA+AESGCM EECDH+ECDSA+SHA384 EECDH+ECDSA+SHA256 EECDH+aRSA+SHA384 EECDH+aRSA+SHA256 EECDH+aRSA+RC4 EECDH EDH+aRSA !aNULL !eNULL !LOW !3DES !MD5 !EXP !PSK !SRP !DSS !RC4"; location / {
proxy_redirect off;
proxy_pass https://emq_server;
#proxy_pass http://172.16.90.56:8084;
proxy_set_header Host $host;
# 反向代理保留客户端地址
proxy_set_header X-Real_IP $remote_addr;
proxy_set_header X-Forwarded-For $remote_addr:$remote_port;
# WebSocket 额外请求头
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
#proxy_set_header Connection “upgrade”;
}
}

  反向代理增加以下配置

upstream emq_server {
server 172.16.90.56:8084 weight=1;
}

  PS:配置文件中除注释外不要出现非英文字符,本次配置因为配置proxy_set_header Connection “upgrade”包含中文引号导致配置不生效,测试出现502错误

         外网防火墙配置把nginx的8084端口映射出去

  配置好nginx后可以在不配置host的情况下测试websocket

  如果是配置反向代理ws则增加配置文件如下

#emqx的ws8083端口反向代理配置,页面通过连接ws://www.xxx.net/mqtt连接消息队列
server {
listen 8083;
ssl off;
server_name www.xxx.net;
error_log /opt/log/emqxerror.log;
access_log /opt/log/emqxaccess.log;
client_max_body_size 100M;
location / {
proxy_redirect off;
proxy_pass http://emq_server_http; #这里为http和上面的https有所区别
proxy_set_header Host $host;
# 反向代理保留客户端地址
proxy_set_header X-Real_IP $remote_addr;
proxy_set_header X-Forwarded-For $remote_addr:$remote_port;
# WebSocket 额外请求头
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}

  反向代理增加以下配置

upstream emq_server_http {
server 172.16.90.56:8083 weight=1;
}

  外网防火墙增加对端口8083的对外映射

EMQ配置通过nginx反向代理wss和ws的更多相关文章

  1. nginx之旅(第三篇):代理、正向代理、反向代理、代理的原理、nginx反向代理场景、nginx反向代理配置、nginx反向代理语法

    一.代理服务与反向代理 什么是代理服务 代理-代理办理(代理理财.代理收货.代理购物等等). 一般情况下,如果没有特别说明,代理技术默认说的是正向代理技术.关于正向代理的概念如下: 正向代理(forw ...

  2. 配置一个nginx反向代理&负载均衡服务器

    一.基本信息 系统(L):CentOS 6.9 #下载地址:http://mirrors.sohu.com 反代&负载均衡(N):NGINX 1.14.0 #下载地址:http://nginx ...

  3. [svc]tomcat目录结构/虚拟主机/nginx反向代理cache配置

    tomcat目录文件 /usr/local/tomcat/bin/catalina.sh stop sleep 3 /usr/local/tomcat/bin/catalina.sh start to ...

  4. nginx 反向代理及 https 证书配置

    nginx 反向代理及 https 证书配置 author: yunqimg(ccxtcxx0) 1. 编译安装nginx 从官网下载 nginx源码, 并编译安装. ./configure --pr ...

  5. 关于nginx反向代理后获取不到客户端的真实ip地址问题

    前段时间在我的网站上用nginx做了一下反向代理,最近发现不能获取客户端ip了,都是拿到的127.0.0.1的本地ip... 通过查资料后,再去看了看我的配置文件,结果发现我没有如下配置: nginx ...

  6. nginx反向代理+缓存开启+url重写+负载均衡(带健康探测)的部署记录

    在日常运维工作中,运维人员会时常使用到nginx的反向代理,负载均衡以及缓存等功能来优化web服务性能. 废话不多说,下面对测试环境下的nginx反向代理+缓存开启+url重写+负载均衡(带健康探测) ...

  7. CORS跨域与Nginx反向代理跨域优劣对比

    最近写了一些关于前后端分离项目之后,跨域相关方案的基本原理和常见误区的帖子,主要包括CORS和Nginx反向代理.这两种方案项目中都有在用,各有优缺,关于具体使用哪种方案,大家的观点也不大一致,本文主 ...

  8. WCF nginx反向代理遇到的问题

    正常配置了nginx反向代理,其他java站点什么的都正常,就wcf总是失败.始终会跑如下异常: 由于 AddressFilter 在 EndpointDispatcher 不匹配,To 为“http ...

  9. 【Linux】采用nginx反向代理让websocket 支持 wss

    背景:玩swoole 服务 使用Nginx反向代理解决wss问题. 即客户端通过wss协议连接 Nginx 然后 Nginx 通过ws协议和server通讯. 也就是说Nginx负责通讯加解密,Ngi ...

随机推荐

  1. RMQ--树状数组,ST表,线段树

    RMQ Range Minimum/Maximum Query 区间最值问题 树状数组 https://www.cnblogs.com/xenny/p/9739600.html lowbit(x) x ...

  2. img src防缓存

    //加时间戳防缓存 var imgurl = "/pcms/headImg/${sessionScope.accountInfo.accountId}_cut.jpg?time=" ...

  3. C# 可为空?及(??、?. )

    可空类型修饰符(?): 引用类型可以使用空引用表示一个不存在的值,而值类型通常不能表示为空. 例如:string str=null; 是正确的,int i=null; 编译器就会报错. 为了使值类型也 ...

  4. Base64原理解析与使用

    一.Base64编码由来 为什么会有Base64编码呢?因为有些网络传送渠道并不支持所有的字节,例如传统的邮件只支持可见字符的传送,像ASCII码的控制字符就 不能通过邮件传送.这样用途就受到了很大的 ...

  5. cube.js 学习(九)cube 的pre-aggregation

    我们可以使用cube的pre-aggregation 加速数据的查询,以下为一张来自官方的pre-aggregation 架构 参考架构图 pre-aggregation schema preAggr ...

  6. 洛谷 P1102 A-B数对 题解

    P1102 A-B 数对 题目描述 出题是一件痛苦的事情! 题目看多了也有审美疲劳,于是我舍弃了大家所熟悉的 A+B Problem,改用 A-B 了哈哈! 好吧,题目是这样的:给出一串数以及一个数字 ...

  7. 【一起来烧脑】入门ES6体系

    为什么要学习ES6 掌握ES3.ES5.ES6的联系和区别 快速入门ES6 学会快速构建ES6的编译环境 学习ES6: 常量 作用域 箭头函数 默认参数 对象代理 git git clone http ...

  8. UOJ#339. 【清华集训2017】小 Y 和二叉树 贪心

    原文链接 www.cnblogs.com/zhouzhendong/p/UOJ339.html 前言 好久没更博客了,前来更一发. 题解 首先,我们考虑一个子问题:给定根,求出最小中序遍历. 如果根节 ...

  9. java.io.FileNotFoundException: D:\e (拒绝访问。)

    这是因为访问的文件地址是文件夹而不是,具体的文件,把路径改为具体的文件就可以了. 参考文章:https://blog.csdn.net/w405722907/article/details/78610 ...

  10. (二)SQL学习之数据定义类SQL

    以mysql为例 对数据库的常用操作 创建数据库:CREATE DATABASE mydb; 删除数据库:DROP DATABASE mydb; 切换数据库:USE mydb; 查询数据库:SHOW ...