Nginx Uri中的variables部分

我想将nginx中的一部分URI放入一个Variable中。 目前我有这个规则。

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可以有其他号码。

我想从URL 22092012部分提取到一个variables中,然后在上面的文件存在条件中进行:

 if ( !-e /tmp/access_$urlpart_$cookie_PHPSESSID.tmp ) { rewrite /folder1/folder2/(.*) /folder1/folder1.php?file=$1 last; } 

为什么我需要这个:我做一个login保护,以保护会话login文件。 我的应用程序写入的tmp文件,所以如果在一个文件夹中有100个文件,脚本不需要validation每个文件,如果它有权限,并不需要运行每个文件的PHP工人。

这可能吗?

是的 – 您可以在location使用正则expression式与“捕捉”,并在location块中引用它们,如下所示:

 location ~ /folder1/folder2/(.*)/ { if ( !-e /tmp/access_$1_$cookie_PHPSESSID.tmp ) { ... } }