找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
广告投放联系QQ68610888广告投放联系QQ68610888
广告投放联系QQ68610888广告投放联系QQ68610888
查看: 452|回复: 8

【求助】如何使用nginx反向代理内网的hls容器链接

[复制链接]
发表于 2026-2-26 14:10 | 显示全部楼层 |阅读模式
本帖最后由 xuyuntao1234 于 2026-2-26 14:13 编辑

网上购入了一个H264/H265视频编码器,将自家的IPTV插入,然后再环出接入IPKVM,IPTV设置为开机自动播放央视1,已基本实现内网随意播放。
现想实现公网推流,使异地设备可直播观看m3u8流,因此需通过nginx将内网设备反向代理到外部,询问千问ai后得到以下脚本,实测失败。
请问大佬们,如何解决?


图1 视频编码器控制后台




图2 IPKVM控制后台

代码1 nginx服务模块(千问ai生成)
  1. server {
  2.     listen 21796 ssl;
  3.     listen [::]:21796 ssl;
  4.     server_name _iptv_hls;

  5.     include conf.d/restrict_url;   # 限制只能通过域名访问的脚本
  6.     include conf.d/dx_ssl;   # ssl通用配置脚本

  7.     # 定义上游地址
  8.     set $upstream_rtmp_server 192.168.2.30;

  9.     # 1. 代理 m3u8 索引文件
  10.     location = /live/0/hls.m3u8 {
  11.         proxy_pass http://$upstream_rtmp_server/live/0/hls.m3u8;
  12.         
  13.         # 【关键】绝对禁止缓存 m3u8,确保播放器能获取最新的分片列表
  14.         proxy_cache off;
  15.         proxy_buffering off;
  16.         add_header Cache-Control 'no-store, no-cache, must-revalidate, proxy-revalidate, max-age=0';
  17.         add_header Expires '0';
  18.         
  19.         proxy_set_header Host $host;
  20.         proxy_set_header Connection "";
  21.         proxy_http_version 1.1;
  22.     }

  23.     # 2. 代理 .live.ts 单文件分片
  24.     # 使用精确匹配或前缀匹配均可,这里针对特定文件做精确优化
  25.     location = /live/0.live.ts {
  26.         proxy_pass http://$upstream_rtmp_server/live/0.live.ts;
  27.         
  28.         # 【最关键】对于单文件 HLS (live.ts),必须关闭缓冲和缓存
  29.         # 如果开启缓冲,Nginx 会等待整个文件下载完再发给用户,导致直播卡死或无限延迟
  30.         proxy_buffering off;
  31.         proxy_cache off;
  32.         
  33.         # 强制禁用 Nginx 对该文件的任何临时文件写入
  34.         proxy_max_temp_file_size 0;
  35.         
  36.         # 设置极短的超时,避免连接挂起
  37.         proxy_connect_timeout 5s;
  38.         proxy_send_timeout 10s;
  39.         proxy_read_timeout 10s; # 根据实际分片时长调整,通常略大于分片时长
  40.         
  41.         # 传递头部,确保后端能识别请求来源
  42.         proxy_set_header Host $host;
  43.         proxy_set_header Connection "";
  44.         proxy_http_version 1.1;
  45.         
  46.         # 重要:告诉浏览器/CDN 不要缓存这个动态变化的 ts 文件
  47.         add_header Cache-Control 'no-store, no-cache, must-revalidate, proxy-revalidate, max-age=0';
  48.         add_header Expires '0';
  49.         add_header Access-Control-Allow-Origin *; # 允许跨域播放
  50.     }
  51. }
复制代码



请大佬看看,能否帮助一下,谢谢!


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
只谈技术、莫论政事!(点击见详情) | 互相尊重、友善交流、切勿过度反应、玻璃心。胡乱输入灌水等操作将会被封禁ID。
发表于 2026-2-26 14:12 | 显示全部楼层
用LUCKY可以吗

点评

目前有好多静态的服务使用nginx部署了,lucky我没有用过  详情 回复 发表于 2026-2-26 14:15
只谈技术、莫论政事!(点击见详情) | 互相尊重、友善交流、切勿过度反应、玻璃心。胡乱输入灌水等操作将会被封禁ID。
回复

使用道具 举报

 楼主| 发表于 2026-2-26 14:15 | 显示全部楼层

目前有好多静态的服务使用nginx部署了,lucky我没有用过

点评

你有公网ip?  详情 回复 发表于 2026-2-26 14:18
只谈技术、莫论政事!(点击见详情) | 互相尊重、友善交流、切勿过度反应、玻璃心。胡乱输入灌水等操作将会被封禁ID。
回复

使用道具 举报

发表于 2026-2-26 14:18 来自手机 | 显示全部楼层
xuyuntao1234 发表于 2026-2-26 14:15
目前有好多静态的服务使用nginx部署了,lucky我没有用过

你有公网ip?

点评

有的呢,动态公网ip,除了80,443都能开  详情 回复 发表于 2026-2-26 14:19
只谈技术、莫论政事!(点击见详情) | 互相尊重、友善交流、切勿过度反应、玻璃心。胡乱输入灌水等操作将会被封禁ID。
回复

使用道具 举报

 楼主| 发表于 2026-2-26 14:19 来自手机 | 显示全部楼层
mzk44j 发表于 2026-2-26 14:18
你有公网ip?

有的呢,动态公网ip,除了80,443都能开

点评

那不就可以?还反带做啥?你不是要公开你的服务器?  详情 回复 发表于 2026-2-26 14:20
只谈技术、莫论政事!(点击见详情) | 互相尊重、友善交流、切勿过度反应、玻璃心。胡乱输入灌水等操作将会被封禁ID。
回复

使用道具 举报

发表于 2026-2-26 14:20 来自手机 | 显示全部楼层
xuyuntao1234 发表于 2026-2-26 14:19
有的呢,动态公网ip,除了80,443都能开

那不就可以?还反带做啥?你不是要公开你的服务器?

点评

我有4个跨3省的位置需要用这个直播,远程局域网不够稳定,希望通过直链访问😁  详情 回复 发表于 2026-2-26 14:23
只谈技术、莫论政事!(点击见详情) | 互相尊重、友善交流、切勿过度反应、玻璃心。胡乱输入灌水等操作将会被封禁ID。
回复

使用道具 举报

 楼主| 发表于 2026-2-26 14:23 来自手机 | 显示全部楼层
mzk44j 发表于 2026-2-26 14:20
那不就可以?还反带做啥?你不是要公开你的服务器?

我有4个跨3省的位置需要用这个直播,远程局域网不够稳定,希望通过直链访问😁
只谈技术、莫论政事!(点击见详情) | 互相尊重、友善交流、切勿过度反应、玻璃心。胡乱输入灌水等操作将会被封禁ID。
回复

使用道具 举报

 楼主| 发表于 2026-2-26 17:37 | 显示全部楼层

搞定了,公开代码

本帖最后由 xuyuntao1234 于 2026-2-26 17:58 编辑

已完美搞定,现公开代码
在nginx.conf下添加rtmp块
  1. rtmp {
  2.     server {
  3.         listen 1935;
  4.         chunk_size 8192;

  5.         application live {
  6.             live on;
  7.             record off;

  8.             hls on;
  9.             hls_path /tmp/hls_tmp;
  10.             hls_fragment 3s;
  11.             hls_playlist_length 12s;
  12.             hls_cleanup on;
  13.             hls_fragment_naming sequential;
  14.             hls_sync 2ms;
  15.             hls_continuous on;


  16.             pull rtmp://192.168.2.30/live name=0 static live=1;   # 对应视频编码器中的主码流,经测试,这里只有设置为h264编码才可用
  17.             pull rtmp://192.168.2.30/live name=1 static live=1;   # 对应视频编码器中的次码流1,经测试,这里只有设置为h264编码才可用,可以删掉
  18.         }
  19.     }
  20. }
复制代码


在已有的http块中添加服务
  1. server {
  2.     listen 11571 ssl;   # 自己设置端口,上公网需要打开防火墙
  3.     listen [::]:11571 ssl;   # 自己设置端口
  4.     server_name _iptv_hls_activate;

  5.     include conf.d/restrict_url;   # 一个限制使用域名访问的脚本,你没有的话可以删掉
  6.     include conf.d/ssl;     # 一个通用的ssl设置脚本,你没有的话可以自己添加ssl设置

  7.     location /hls {
  8.         alias /tmp/hls_tmp;
  9.         add_header 'Access-Control-Allow-Origin' '*' always;
  10.         add_header Cache-Control no-cache;
  11.         types {
  12.             application/vnd.apple.mpegurl m3u8;
  13.             video/mp2t ts;
  14.         }
  15.     }
  16. }
复制代码


配置完成后,再使用nginx静态代理你的m3u频道列表
可参考如下代码
  1. server {
  2.     listen 11572 ssl;   # 自己设置端口,上公网需要打开防火墙
  3.     listen [::]:11572 ssl;
  4.     server_name _iptv_sources;

  5.     include conf.d/restrict_url;   # 一个限制使用域名访问的脚本,你没有的话可以删掉
  6.     include conf.d/ssl;     # 一个通用的ssl设置脚本,你没有的话可以自己添加ssl设置

  7.     location /iptv.txt {
  8.         alias /etc/iptv/iptv-sources.txt;
  9.     }
  10.     location /iptv.m3u {
  11.         alias /etc/iptv/iptv-sources.m3u;
  12.     }
  13.     location /iptv.png {
  14.         alias /etc/iptv/iptv-logo.png;
  15.     }
  16. }
复制代码


/etc/iptv文件夹中内容如下所示


m3u和txt文件怎么写,请参考网上相关帖子,这不是这里的重点,不介绍了。
在使用时,只需要在你的iptv客户端app中填入频道链接https://你的域名:11572/iptv.m3u,即可观看。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
只谈技术、莫论政事!(点击见详情) | 互相尊重、友善交流、切勿过度反应、玻璃心。胡乱输入灌水等操作将会被封禁ID。
回复

使用道具 举报

 楼主| 发表于 2026-2-26 17:57 | 显示全部楼层
也公开下m3u和txt文件

  1. #EXTM3U
  2. #iptv
  3. #EXTINF:-1 tvg-name="IPTV-1-HD" tvg-logo="https://你的域名:11572/iptv.png" group-title="iptv",IPTV-1-HD
  4. https://你的域名:11571/hls/0.m3u8
  5. #EXTINF:-1 tvg-name="IPTV-1" tvg-logo="https://你的域名:11572/iptv.png" group-title="iptv",IPTV-1
  6. https://你的域名:11571/hls/1.m3u8
复制代码

  1. iptv,#genre#
  2. IPTV-1-HD,https://你的域名:11571/hls/0.m3u8
  3. IPTV-1,https://你的域名:11571/hls/1.m3u8
复制代码


只谈技术、莫论政事!(点击见详情) | 互相尊重、友善交流、切勿过度反应、玻璃心。胡乱输入灌水等操作将会被封禁ID。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

欢迎大家光临恩山无线论坛上一条 /2 下一条

有疑问请添加管理员QQ86788181|手机版|小黑屋|Archiver|恩山无线论坛(常州市恩山计算机开发有限公司版权所有) ( 苏ICP备05084872号 )

GMT+8, 2026-8-23 21:26

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

| 江苏省互联网有害信息举报中心 举报信箱:js12377 | @jischina.com.cn 举报电话:025-88802724 本站不良内容举报信箱:68610888@qq.com 电话:13506125623

快速回复 返回顶部 返回列表