我想将 nginx 中 URI 的一部分放入变量中。目前我有这个规则。
if ( !-e /tmp/access_22092012_$cookie_PHPSESSID.tmp ) {
rewrite /folder1/folder2/(.*) /folder1/folder1.php?file=$1 last;
}
请求就像
http://my.domain/folder1/folder2/22092012/index.html
http://my.domain/folder1/folder2/22092012/files/x.sfw
其中 22092012 也可以有其他数字。
我想22092012
从 URL 中提取部分并将其放入变量中,然后在文件中输入上述存在条件:
if ( !-e /tmp/access_$urlpart_$cookie_PHPSESSID.tmp ) {
rewrite /folder1/folder2/(.*) /folder1/folder1.php?file=$1 last;
}
我为什么需要这个:我设置了登录保护,以使用会话登录来保护文件。我的应用程序写入 tmp 文件,因此如果文件夹中有 100 个文件,则脚本不需要验证每个文件是否有权限,也不需要为每个文件运行 php worker。
这可能吗?
答案1
是的——您可以使用带有“捕获”的正则表达式location
,并在location
块中引用它们,如下所示:
location ~ /folder1/folder2/(.*)/ {
if ( !-e /tmp/access_$1_$cookie_PHPSESSID.tmp ) { ... }
}