我将 Rails3 与 Nginx 一起使用。
我通过控制器提供文件:上传操作。
class BannersController < ApplicationController
... # authentication
def uploads
send_file '{localFilePath}', :disposition => 'inline'
end
end
我取消注释这一行
config.action_dispatch.x_sendfile_header = 'X-Accel-Redirect' # for nginx
在环境/production.rb 中。
我还在我的初始化程序/mime_types.rb 中定义了一个 mime 类型“m4v”
Mime::Type.register "video/mp4", :m4v
MIME::Types.add(MIME::Type.from_array("video/mp4", %(m4v)))
我的 nginx 配置看起来像这样
http {
... # ruby-1.9.3-p0
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
gzip on;
server {
client_max_body_size 30M;
listen 80;
server_name ...
root ...
passenger_enabled on;
rails_env production;
location ~ ^/(assets)/ {
root ...
gzip_static on;
expires max;
add_header Cache-Control public;
}
}
}
当我请求视频文件 http://{ip}/components/{id}/content/host_bg.m4v 文件时,我在我的 chrome 控制台中看到错误(单个请求产生 4 行)
我该如何解决?我猜我的nginx配置不完整。请注意,我可以播放视频,但它没有按预期提供(例如,javascript HTML5 jPlayer 只能播放视频一次然后停止,从其他 http 位置重复工作)。谢谢!