公司业务访问量大,因此需要对后端emq服务器进行性能调优,在前端配置,以提高服务的健壮性。同时,由于mqtts传输方式中加解密的操作较占资源,所以需要把这部分操作让nginx服务器完成,让后端通信均为mqtt方式,减少服务器压力。
本文所有配置基于nginx-plus R17版本。
nginx的安装和简单配置参考其他网页。
user nginx; worker_processes auto; error_log /var/log/nginx/error.log debug; pid /var/run/nginx.pid; events { worker_connections 1024; } # TCP/UDP proxy and load balancing block # stream { upstream mqtt_cluster { server 192.168.100.188:1883; server 192.168.100.190:1883; } server { listen 9993 ssl; proxy_pass mqtt_cluster; ssl_certificate /etc/ssl/certs/cert.crt; ssl_certificate_key /etc/ssl/certs/key.key; ssl_protocols TLSv1 TLSV1.1 TLSv1.2; ssl_session_cache shared:SSL:10m; ssl_session_timeout 10m; } }
以上配置已经可以实现在nginx端进行mqtts的ssl加解密操作。测试时使用一个加密的pub端发送消息,一个加密的sub端,一个不加密的sub端接收消息。结果不论加密或不加密的sub端都可以收到消息。
user nginx; worker_processes auto; error_log /var/log/nginx/error.log debug; pid /var/run/nginx.pid; events { worker_connections 1024; } # TCP/UDP proxy and load balancing block # stream { upstream mqtt_cluster { hash 192.168.100.187 consistent; server 192.168.100.188:1883; server 192.168.100.190:1883; } server { listen 9993 ssl; proxy_pass mqtt_cluster; ssl_certificate /etc/ssl/certs/cert.crt; ssl_certificate_key /etc/ssl/certs/key.key; ssl_protocols TLSv1 TLSV1.1 TLSv1.2; ssl_session_cache shared:SSL:10m; ssl_session_timeout 10m; } }
nginxPlus配置上游emq服务器负载均衡及SSL Termination
原文:https://www.cnblogs.com/liuhao30/p/10638984.html