我对这个话题一无所知。我在 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";
}
}