如何创建 websocket 后端?

如何创建 websocket 后端?

我对这个话题一无所知。我在 server_1 上使用 Mosquitto 建立了有效的 websocket 连接。需要发布 websocket 数据的 webapp 位于 server_2 中,并通过 Nginx 反向代理进行访问。

现在,在 LAN 中一切都可以使用未加密的连接,但我需要对其进行加密才能在互联网上发布,所以我需要使用 wss 协议。

我搜索了 Nginx + Websocket 教程,每个人都提到了 websocket 的 http 后端(https://www.nginx.com/blog/websocket-nginx/)。我该如何设置 http 后端?我只有“wss://...”Mosquitto 地址。

答案1

因为 websocket 连接是通过 HTTP 引导的,所以您可以像设置任何其他 HTTP 服务器一样设置 NGINX 代理,并确保包含允许协议升级的标头。

假设你在 NGINX 中执行 SSL 终止,如下所示:

server {                                                                                         
        listen 443;                                                                             
        listen [::]:443;                                                                        
                                                                                                 
        ssl on;                                                                                  
                                                                                                 
        ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;                       
        ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;                     
                                                                                                 
        server_name www.example.com example.com;                                             
                                                                                                 
        location / {                                                                             
                proxy_pass http://mqtt.broker:1883;                                                
                proxy_http_version 1.1;                                                          
                proxy_set_header Upgrade $http_upgrade;                                          
                proxy_set_header Connection "upgrade";                                           
        }                                                                                        
}  

相关内容