2

简而言之,这不起作用:

location ~* /grid/(.+)/ {
         gridfs filestore field=filename type=string root_collection=storage.$1;
}

这是使用https://github.com/mdirolf/nginx-gridfs

它有多个问题。这只是一个仅供参考,因为我认为它不能用位置正则表达式来完成,因为:

  1. group 不是进程,并且 $1 被逐字用作“storage.$1”集合名称
  2. 不知何故,可能在 C 代码中,文件名是通过从匹配中删除字符来获取的,通过删除正则表达式中指定的确切字符数。意思是,“/grid/(.+)/”有 10 个字符长,这就是从整个 url 中删除的字符数(显然减去域)。我已经对此进行了很多测试(仅通过 C 代码很短),这就是它正在做的事情。

我假设这仍然可以通过以某种方式重写或另一个 nginx 配置来完成。

作为最后的手段,我会联系项目维护者,但 nginx 的配置似乎足够灵活,可以解决这些问题,因为这就像广告宣传的那样:

location ~* /grid/ABC/ {
         gridfs filestore field=filename type=string root_collection=storage.ABC;
}
4

0 回答 0