我正在尝试使用Nginx来提供由Web应用程序生成的缓存文件,并发现了一个潜在的问题; url-space是宽的,并且将超过32000子目录的Ext3限制.
我想分解子目录,比如说,制作一个两级文件系统缓存.那么,我目前正在缓存一个文件
/var/cache/www/arbitrary_directory_name/index.html
我会把它存储在类似的东西中
/var/cache/www/a/r/arbitrary_directory_name/index.html
我的麻烦是我无法获得try_files,甚至重写以进行映射.我对这个问题的搜索让我相信我需要做这样的事情(严重缩写):
http {
map $request_uri $prefix {
/aa* a/a;
/ab* a/b;
/ac* a/c;
...
/zz* z/z;
}
location / {
try_files /var/cache/www/$prefix/$request_uri/index.html @fallback;
# or
# if (-f /var/cache/www/$prefix/$request_uri/index.html) {
# rewrite ^(.*)$/var/cache/www/$prefix/$1/index.html;
# }
}
}
但我不能得到/ aa *模式来匹配传入的uri.没有*,它将匹配一个精确的uri,但我不能让它匹配前两个字符.
Nginx文档建议应该允许使用通配符,但我看不到让它们工作的方法.有没有办法做到这一点?我错过了一些简单的事吗?或者我是以错误的方式来做这件事的?