Nginx配置域名反向代理MQTT 配置mqtt /ws /wss訪問域名連線。
阿新 • • 發佈:2022-05-10
有時候我們想通過域名的方式來進行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 等訪問了。