1

Rails3 と Nginx を使用しています。

controller:uploads アクションを介してファイルを提供します。

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 にあります。

また、initializers/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 コンソールにエラーが表示されます (1 回のリクエストで 4 行が生成されます) ここに画像の説明を入力

どうすれば修正できますか?私のnginx構成は完全ではないと思います。ビデオを再生できますが、期待どおりに提供されないことに注意してください (たとえば、javascript HTML5 jPlayer はビデオを 1 回しか再生できず、停止します。繰り返しは他の http の場所から機能します)。ありがとう!

4

1 に答える 1

0

追加した

passenger_set_cgi_param HTTP_X_ACCEL_MAPPING /var/www/=/files/;
location /files/ {
  internal;
  alias /var/www/;
}

私のnginx confファイルに追加すると、動作します。

于 2012-03-14T17:01:10.090 に答える