解决问题:net::ERR_CONTENT_LENGTH_MISMATCH 206 (Partial Content)

简介: 问题今天遇到一个问题,Web 播放器在播放对象存储服务中的某个视频文件时,总是不断的报错 206(Partial Content),具体的信息如下:net::ERR_CONTENT_LENGTH_MISMATCH 206 (Partial Content)造成的结果就是视频播放失败。播放器报错截图如下:

目录

  • 问题
  • 解决
  • 尝试一、猜测可能是证书问题
  • 尝试二、修改 nginx 访问路径
  • 尝试三、修改 nginx 缓存大小
  • 结尾

问题

今天遇到一个问题,Web 播放器在播放对象存储服务中的某个视频文件时,总是不断的报错 206(Partial Content),具体的信息如下:

net::ERR_CONTENT_LENGTH_MISMATCH 206 (Partial Content)

造成的结果就是视频播放失败。

播放器报错截图如下:

image.png

但是,奇怪的有些局域网的播放器虽然报错,但是却可以正常播放,非常奇怪,如下图所示:

image.png

解决

解决这个问题,自己尝试了很多方法。

尝试一、猜测可能是证书问题

猜测可能是证书问题,因为在浏览器中访问服务接口时,浏览器提示证书不可用,点开后发现实际访问的域名和证书颁发的域名不对应。于是,自己猜测是证书不匹配导致的。

后来,自己替换了 nginx 服务引用的证书以及存储服务引用的证书,结果很遗憾,问题依然存在。

尝试二、修改 nginx 访问路径

于是,自己猜测是不是资源没有找到,于是自己修改了 nginx 配置的访问路径。具体修改方式如下所示:

location ^~ /test {
        root /minio/data/test/;
        proxy_pass http://minio-api;
        proxy_redirect off;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }

然而,再次重试,问题依然存在。哎!

不禁感叹:“路漫漫其修远兮,吾将上下而求索”。

尝试三、修改 nginx 缓存大小

通过大量搜索,找到了一种最可能的解决方法,就是修改 nginx 缓存大小。我为什么这么觉得呢? 因为相同的视频文件在有些局域网中可以播放,有些局域网中不可以播放,很有可能就是缓存大小不一致导致的。

修改 nginx 基础配置文件如下:

user  nginx;
worker_processes  1;
error_log  /var/log/nginx/error.log warn;
pid        /var/run/nginx.pid;
events {
    worker_connections  1024;
}
http {
    include       /etc/nginx/mime.types;
    default_type  application/octet-stream;
    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';
    access_log  /var/log/nginx/access.log  main;
    sendfile        on;
    #tcp_nopush     on;
    keepalive_timeout  65;
    proxy_buffer_size 128k;
    proxy_buffers   32 128k;
    proxy_busy_buffers_size 128k;
    #gzip  on;
    include /etc/nginx/conf.d/*.conf;
}

其中关键的信息是下面的三项:

proxy_buffer_size 128k; 
proxy_buffers 32 128k; 
proxy_busy_buffers_size 128k;

这里需要注意的是,个性配置在容器外,修改基础配置到要容器中,路径如下:

/etc/nginx/nginx.conf

结尾

今天介绍的内容就这么多,下一篇文章继续介绍这三项设置都有什么作用。好了,晚安!


作者简介:大家好,我是 liuzhen007,是一位音视频技术爱好者,同时也是CSDN博客专家、华为云享专家(共创编辑)、InfoQ 签约作者,欢迎关注我分享更多干货!


目录
相关文章
|
开发框架 前端开发 .NET
ASP.NET Core MVC 之局部视图(Partial Views)
ASP.NET Core MVC 之局部视图(Partial Views)1.什么是局部视图   局部视图是在其他视图中呈现的视图。通过执行局部视图生成的HTML输出呈现在调用视图中。与视图一样,局部视图使用 .cshtml 文件扩展名。
2038 0
|
.NET C# 开发框架
ASP.NET中Partial Class部分类
原文:ASP.NET中Partial Class部分类 如果您在开发项目的公用函数库,用于公用函数库的内容越丰富越好,但这不可能一下子就写好,需要一点一点的积累,这时就可以使用Partial Class,每隔一段时间将你新开发的Partial Class类的程序上传到服务器上或特定的目录下;而不需要将新的代码复制粘贴到原先的程序代码中,减少不必要的麻烦。
810 0
|
JSON .NET API
Asp.Net Web API 2第十四课——Content Negotiation(内容协商)
原文:Asp.Net Web API 2第十四课——Content Negotiation(内容协商) 前言 阅读本文之前,您也可以到Asp.Net Web API 2 系列导航进行查看 http://www.cnblogs.com/aehyok/p/3446289.html 本文描述ASP.NET Web API如何实现内容协商。
837 0
|
JSON .NET API
Asp.Net Web API 2第十四课——Content Negotiation(内容协商)
前言 阅读本文之前,您也可以到Asp.Net Web API 2 系列导航进行查看 http://www.cnblogs.com/aehyok/p/3446289.html 本文描述ASP.NET Web API如何实现内容协商。
908 0
|
.NET 开发框架 前端开发
asp.net MVC3 Helpers Partial RenderPartial Action RenderAction
partial RenderPartial html.Partial 有返回值(MvcHtmlString)  而RenderPartial 则没有任何的返回值(void) partial输出到临时变量StringWriter  而renderPartial则是直接输出到HtmlHelper.
807 0
|
3月前
|
开发框架 前端开发 JavaScript
ASP.NET MVC 教程
ASP.NET 是一个使用 HTML、CSS、JavaScript 和服务器脚本创建网页和网站的开发框架。
50 7
|
3月前
|
存储 开发框架 前端开发
ASP.NET MVC 迅速集成 SignalR
ASP.NET MVC 迅速集成 SignalR
79 0
|
4月前
|
开发框架 前端开发 .NET
ASP.NET MVC WebApi 接口返回 JOSN 日期格式化 date format
ASP.NET MVC WebApi 接口返回 JOSN 日期格式化 date format
57 0
|
4月前
|
开发框架 前端开发 安全
ASP.NET MVC 如何使用 Form Authentication?
ASP.NET MVC 如何使用 Form Authentication?
|
4月前
|
开发框架 .NET
Asp.Net Core 使用X.PagedList.Mvc.Core分页 & 搜索
Asp.Net Core 使用X.PagedList.Mvc.Core分页 & 搜索
148 0