微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

videostream在轨道4.2

我不知道这是一个编程问题或Web服务器configuration问题。

video文件不public/因此请求必须通过控制器。

在我的控制器中:

def play_video video=Video.find params[:id] response.headers['Content-Length'] = File.size(video.path).to_s send_data File.read(video.path,mode: 'rb'),type: video.mime_type,disposition: 'inline'

结束

我应该为我的Rails应用程序使用Apache或Nginx&Passenger或Mongrel

乘客5比麒麟/瘦/美洲豹等性能

Nginx + Passenger + Rails服务器错误

我可以添加乘客支持到现有的Nginx而不是重build?

Passenger + Nginx + Node(Meteor)100%的cpu使用率

在客户端,我现在正在使用jplayer 。在Linux上开发和生产的Firefox运行正常,我可以向前或向后跳转,没有问题。 在Linux和Windows上的其他所有浏览器上,它都能正常播放,但在开发和制作过程中却没有跳过前进或倒退。 我会把它放到一个jplayer错误,但我得到了完全相同的行为,只有<video> with control attribute ,以及mediaelement.js 。

在开发中,我使用Thin ,生产Passenger和Nginx

Nginx.conf:

worker_processes 4; events { worker_connections 1024; } sendfile on; #tcp_nopush on; http { passenger_root /usr/local/lib64/ruby/gems/2.2.0/gems/passenger-5.0.11; passenger_ruby /usr/local/bin/ruby; keepalive_timeout 120; gzip on; server { server_tokens off; listen 80 default_server; listen 443 ssl; server_name www.example.com; root /path/to/public; passenger_enabled on; client_max_body_size 100M; add_header Strict-Transport-Security "max-age=31536000; includeSubdomains;"; add_header X-Content-Type-Options nosniff; add_header X-XSS-Protection "1; mode=block"; include mime.types; default_type application/octet-stream; #removed SSL config stuff ...

我不确定问题在哪里。 尝试向前跳跃时,不会收到错误消息。

请不要链接到Rails HTTP Streaming教程,因为它们都是蹩脚的,并不是所有有用的发送“hello world”给客户端10倍的例子,除非你有一个实际上处理videostream。 我发现的任何东西都是针对老版本的rails和其他web服务器的。

如何在单个IP(Apache + Passenger)上部署多个rails应用程序?

rvmsudo passenger-install-Nginx-module:没有这样的文件或目录

脚本标题过早结束 – Rails

/ usr / bin / env:乘客:没有这样的文件或目录,退出状态为1(失败)

无法启动Phusion乘客看门狗

这是一个反模式,你正在尝试做什么,send_file是完全阻塞同步机制,基本上它需要N个Rails进程尽可能多的请求,因为你的应用程序将一次服务。 这是通过控制访问文件或执行任何类型的前/后处理的原因完成的:权限检查,审计等。

如果这是反模式,模式如何:1)x-accel-redirect 2)通过auth_request模块进行异步权限检查

在第一种情况下,您的Rails应用程序只返回x-accel-redirect标头中带有空白主体的文件的URL,然后关闭此请求,以便Rails能够立即继续提供新的请求,而不是等到客户端获取文件慢速客户端的连接Rails不能自由处理,直到完成)。 基本上要同时提供10个大的视频文件10名工作人员要求你有。 x-accel-redirect只有一个工人可以做同样的工作:

轨道

def download video=Video.find params[:id] headers['x-accel-redirect'] = "#{video.file_name}" render nothing: true end

Nginx

location /video { internal; root /mnt/video; }

另一种方法是auth_request ,效率相似,但是您需要事先知道文件目标URL,而不是由服务器生成。 Auth_request位置是内部的,它通过Rails路由处理验证,然后拒绝或将用户传递给目标视频文件URL:

Nginx

location /video/ { root /mnt/video; auth_request /auth; ... } location = /auth { internal; proxy_pass http://localhost; proxy_pass_request_body off; proxy_set_header Content-Length ""; proxy_set_header X-Original-URI $request_uri; }

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐