1

NginxでWebサーバーをセットアップし、nginx-gridfsモジュールを使用してMongodbコンテンツにアクセスし、http_mp4_moduleを使用してクライアントでmp3ファイルをストリームとして再生します。上記のサービスは両方ともスタンドアロンで正常に動作しますが、これら2つのサービスを結合しようとすると、Mongodb に保存されている mp3 ファイルにアクセスして、クライアントでストリームとして再生しようとすると、404 エラーが表示されます。これは、http_mp4_module が Gridfs で動作しないように聞こえます。ファイル システムに存在する実際のファイルが必要です。以下は私のNginx構成設定です:

Mongodb コンテンツにアクセスする場合: (URL http:// myhost/voice/mp3/xxxxxx.mp3 で mp3 ファイルにアクセスできます)

     location /voice/mp3/ {
                     gridfs whatsup
                            field=filename
                            type=string
                            root_collection=storage.voice.mp3;
                     mongo localhost:27017;
     }

クライアントで mp3 ファイルをストリームとして再生する場合 (URL http://myhost/mp3/xxxxxx.mp3 のブラウザーで mp3 を再生できます。mp3 ファイルはファイル システムに存在します)。

     location /mp3 {
              root /var/www/html/;
              mp4;
     }

上記のサービスは両方とも正常に機能していますが、それらを組み合わせると機能しません。構成は次のとおりです。

     location /play/mp3 {
                     gridfs whatsup
                            field=filename
                            type=string
                            root_collection=storage.voice.mp3;
                     mongo localhost:27017;

                     mp4;
        }

URL http://myhost/play/mp3/xxxxxx.mp3 にブラウザでアクセスして遊んでみると、404エラーが表示されます。

両方のサービスを組み合わせるアイデアはありますか? または私が逃したものがあるかどうか?

4

3 に答える 3

2

gridfs-fuse を使用して gridfs をファイル システムにマウントする代わりに、これを確認してください: http://blog.vladimirm.com/2011/06/export-files-from-mongodb-gridfs-with-directory-paths/

これは、gridfs ファイルをファイルシステムにマウントする bash スクリプトです。

利用方法 :

  • gridfs.sh という名前のファイルを作成します (リンクにある bash スクリプトの中に入れます)。

  • 次のコマンドを実行します: $ ./gridfs.sh host database_name (これにより、現在のディレクトリ内にファイルがマウントされます)。

于 2012-12-10T11:03:14.427 に答える
0

まず、mongodb gridfsのURLをローカルファイルシステムにリダイレクトし、nginxサーバーを次のように構成します。

location / {
        root mp3;
        mp4;
}

location /tushuo/voice/mp3/ {
    rewrite ^/tushuo/voice/mp3/(.*) /$1;
}

次に、gridfs-fuseを使用してmongodb gridfsをローカルファイルシステムツリーにマウントし、nginxmp4モジュールがそれを検出できるようにします。(注:nginxをrootとして実行する必要があります。)

sudo ./mount_gridfs --db=whatsup.storage.tushuo.voice --host=localhost --fsnode=mp3 -/usr/local/nginx/mp3/
于 2012-09-17T03:32:36.550 に答える