1人参与 • 2026-09-20 • websocket
将 websocket (ws) 转换为安全 websocket (wss),核心在于在通信链路中加入 ssl/tls 加密层。
通常有两种实现方案:
以下是工业界最常用的 nginx 反向代理方案。
这种方式无需修改后端视频流业务代码,性能最高,且方便管理证书。
ws://localhost:8080 的视频流服务。video.example.com)。cert.crt 和 key.key)。在 nginx 中,你需要配置一个监听 443 端口的 server 块,并将 wss 请求转发给后端的 ws 服务。
server {
listen 443 ssl;
server_name video.example.com;
# 配置 ssl 证书
ssl_certificate /etc/nginx/ssl/video.example.com.crt;
ssl_certificate_key /etc/nginx/ssl/video.example.com.key;
# ssl 优化配置(可选)
ssl_protocols tlsv1.2 tlsv1.3;
ssl_ciphers high:!anull:!md5;
location / {
# 转发到后端 ws 服务
proxy_pass http://127.0.0.1:8080;
# websocket 关键头配置
proxy_http_version 1.1;
proxy_set_header upgrade $http_upgrade;
proxy_set_header connection "upgrade";
# 传递客户端真实 ip
proxy_set_header host $host;
proxy_set_header x-real-ip $remote_addr;
proxy_set_header x-forwarded-for $proxy_add_x_forwarded_for;
# 解决视频流延迟问题
proxy_read_timeout 86400s;
proxy_send_timeout 86400s;
}
}wss://video.example.com,nginx 负责进行 tls 解密。ws://127.0.0.1:8080。upgrade 和 connection 字段是 websocket 建立连接的核心,告诉 nginx 这是一个长连接。如果你的后端是 node.js (例如 ws 库),你也可以直接在代码中加载证书:
const fs = require('fs');
const https = require('https');
const websocket = require('ws');
// 加载证书
const server = https.createserver({
cert: fs.readfilesync('/path/to/cert.crt'),
key: fs.readfilesync('/path/to/key.key')
});
const wss = new websocket.server({ server });
wss.on('connection', (ws) => {
console.log('客户端已连接');
// 这里处理视频流逻辑
});
server.listen(8443); // 此时访问 wss://your-ip:8443https 加载的,你绝对不能在代码中使用 ws://,否则浏览器会因安全策略拦截。必须使用 wss://。ssl_certificate 必须包含完整的证书链(包含中间证书),否则移动端或部分浏览器会报 self-signed certificate 错误。proxy_read_timeout 设置足够大,否则 nginx 会自动断开 60 秒后没有数据包的连接。ufw 或 firewalld)开放了 443 端口。建议:生产环境强烈推荐使用 方案一 (nginx),因为 nginx 处理高并发连接的能力远高于 node.js 或 python 自带的 http 服务,且更易于维护 ssl 证书的更新。
到此这篇关于nginx将websocket ws视频流转换为wss视频流的配置方案的文章就介绍到这了,更多相关nginx websocket ws视频流转为wss内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!
您想发表意见!!点此发布评论
版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。
发表评论