要するに、これは機能しません:
location ~* /grid/(.+)/ {
gridfs filestore field=filename type=string root_collection=storage.$1;
}
これはhttps://github.com/mdirolf/nginx-gridfsを使用しています
それには複数の問題があります。次の理由により、場所の正規表現では実行できないと思います。
- グループはプロセスではなく、$1 は "storage.$1" コレクション名として逐語的に使用されています。
- おそらくCコードでは、ファイル名は、正規表現で指定された正確な数の文字を削除することにより、一致から文字を取り除くことによって取得されます。つまり、「/grid/(.+)/」は 10 文字の長さであり、これは URL 全体から削除される文字数です (明らかにドメインを除いて)。私はこれをかなりテストしました (C コードを実行するだけです)。これが実行していることです。
これは、何らかの形で書き換えるか、別のnginx構成でまだ実行できると想定しています。
最後の手段として、プロジェクトのメンテナーに連絡しますが、nginx の構成は、宣伝どおりに機能するため、問題を回避するのに十分な柔軟性があるようです。
location ~* /grid/ABC/ {
gridfs filestore field=filename type=string root_collection=storage.ABC;
}