我不知道这是一个编程问题或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; }
总结以上是内存溢出为你收集整理的videostream在轨道4.2全部内容,希望文章能够帮你解决videostream在轨道4.2所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)