应用商店的OpenResty播放webdav视频的兼容问题

问题:通过商店的OpenResty新建网站后代理后端服务,只要任意一个网站增加新的反向代理后,通过webdav播放视频失败。
相关商店应用:OpenResty 1.21.4.3-0-focal,Kodbox 1.4505。

复现步骤:
1.通过 1Panel应用商店安装OpenResty 和 Kodbox。
2.Kodbox 中上传一部mp4视频,开启webdav。
3.1Panel 的网站菜单下新增一个网站,反向代理到kodbox的端口。这个时候通过webdav播放视频是正常的(播放视频软件例子:windows下可以用PotPlayer,iOS 下可以用nPlayer,安卓可以用NOVA Video Player)。
4.1Panel 的网站菜单下的网站,新增一个反向代理。
这时播放视频就全部失败了。
失败之后,把新的反向代理删除后不能恢复播放,把网站删除后重建也不能恢复播放。必须把 OpenResty卸载后重新安装才可以。另外在任意的网站(和当前使用网站可以没有关系)新增一个反向代理都会导致视频播放失败。

会不会是挂载盘的问题,可能和浏览器也有关系

这个问题是非常的奇怪。
1.直接用 kodbox映射的http端口,可以播放视频。
2.用应用商店的Nginx Proxy Manager,反向代理也是可以。
3.只是用1panel 的网站配置,如果其中某个网站任意增加一个反向代理就是出问题了。必须重新安装openresty才行。
4.1panel 升级到 v1.10.0-lts ,问题还是存在。
5.这里的问题不是说用浏览器去播放视频是使用客户端,比如ios 或 Android的 nPlayer之类的视频播放器。

用andriod的nova video player 请求后的抓包测试结果。

1.正常播放时,返回的是Http状态码 是 206 Partial Content。


2.不能播放时,返回的是Http状态码 是 200 。

*请忽略状态401,因为服务器需要用户名,播放器会先不提供用户进行请求,然后再提供用户名进行请求。

感觉是代理缓存的配置的问题。
只要在任意网站 多添加一个反向代理,OpenResty会自动添加一段代理的配置。如下图:

把这段自动添加的内容删除了就可以。

1 个赞

1.OpenResty 自动增加这段缓存配置会导致http header中的 Range,If-Range,If-Match几个字段不转发,影响大文件分片下载,或大文件上传时的断点续传功能。
2.建议优化一下,缓存配置 是否可以加个开关,不要自动增加。或者 header中也转发相关字段。等方法来规避这个问题。