Короче говоря, это не работает:
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;
}