惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

V
Visual Studio Blog
Recent Announcements
Recent Announcements
雷峰网
雷峰网
The GitHub Blog
The GitHub Blog
罗磊的独立博客
月光博客
月光博客
J
Java Code Geeks
A
About on SuperTechFans
Microsoft Security Blog
Microsoft Security Blog
D
Docker
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
F
Fortinet All Blogs
U
Unit 42
C
Check Point Blog
Martin Fowler
Martin Fowler
有赞技术团队
有赞技术团队
博客园 - 叶小钗
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
酷 壳 – CoolShell
酷 壳 – CoolShell
Blog — PlanetScale
Blog — PlanetScale
大猫的无限游戏
大猫的无限游戏
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
阮一峰的网络日志
阮一峰的网络日志
MyScale Blog
MyScale Blog

博客园 - 左直拳

在centos上部署gitea服务器 我的2025 利用wvp-gb28181-pro国标级联实现上级观看下级摄像头 将c++程序部署到docker 安装linux时的存储设置 使用Mobile Atlas Creator 2.0获取离线地图 利用SRS拉取摄像头辅码流实现浏览器展示多路摄像头预览功能 程序跑在docker容器里会有性能瓶颈吗? 前端vue3+后端spring boot导出数据 c++程序示例:多线程下的实例计数器 linux下变更mysql的数据文件目录 c++项目使用drogon框架提供Resful API在CPU ARM架构下崩溃问题 编写c++程序分别在x86和arm架构的ubuntu下访问CAN 接口设备 时区问题导致java程序查询无结果 ubuntu 20.04挂载固态硬盘 项目绩效域 c++中构造对象实例的两种方式及其返回值 c++中“&”符号代表引用还是取内存地址? 高级项目管理
自签名证书需要手动确认风险导致nginx转发无效问题
左直拳 · 2025-11-13 · via 博客园 - 左直拳

众所周知,采用https的站点中,页面不能有指向http的链接,因为这些链接根本无效。那如果真的需要连接http怎么办,我通常是用nginx做转发,将http转发为https地址。这些都是老套路了,所以我前一阵子,因为业主要求加强安全性,将一个http站点改造成https,轻车熟路,三下五除二,很快搞定。

但问题就来了。改造后的https站点,其他功能都正常,就是视频播放不了。视频播放地址原本是一个ws(部署在同一台服务器上的websocket,服务器的IP是10.0.1.26),支持http;做转发后变成wss,支持https。具体转发的配置如下

1)nginx下的转发配置:

 # 转发WebSocket请求
 location /optc/ {
     # 后端WebSocket服务地址
     proxy_pass http://10.0.1.26:8888;
     
     # WebSocket必备配置
     proxy_http_version 1.1;
     proxy_set_header Upgrade $http_upgrade;
     proxy_set_header Connection "Upgrade";
     proxy_set_header Host $host;
     proxy_cache_bypass $http_upgrade;
     
     # 增加超时设置(根据需要调整)
     proxy_connect_timeout 60s;
     proxy_read_timeout 300s;
     proxy_send_timeout 60s;
 }

2)页面中使用该转发(最后一句)

const player = mpegts.createPlayer({
  enableWorker: true,
  type: "flv",
  isLive: true,
  liveBufferLatencyChasing: true,
  hasAudio: false,
  hasVideo: true,
  // 使用Nginx配置的域名和WSS协议
  url: `wss://10.0.1.26/optc/?url=rtsp://admin:123456@10.0.1.87554/mpeg4`,
});

后来发现,问题出在自签名证书。https需要证书,但我这个证书是自己签发的,浏览器根本不认,所以第一次打开时,浏览器会提示风险,问你是否需要继续?如下图。此时需要点击确定,继续下一步才能打开
在这里插入图片描述

我在服务器上测试的时候,使用的地址是https://localhost,首次使用时浏览器会弹出警告,确认后进入下一步。但是,nginx配置中,我用的是服务器的IP(10.0.1.26),这个地址并没有经过警告确认,所以就打不开了。

解决办法也简单,在服务器上用https://10.0.1.26访问,经过一次警告确认就可以了。