Nginx 变量中的 Uri 部分

Nginx 变量中的 Uri 部分

我想将 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 ) { ... }
}

相关内容