Nginx Parte do Uri na Variável

2

Gostaria de colocar uma parte de um URI no nginx em uma variável. Atualmente tenho essa regra.

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

As solicitações são como

link

link

Onde 22092012 pode ter também outros números.

Gostaria de extrair a parte 22092012 da URL colocando-a em uma variável, o que acontece no arquivo existe condição acima:

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

Por que preciso disso: faço uma proteção de login para proteger arquivos com um login de sessão. Meu aplicativo grava os arquivos tmp, portanto, se em uma pasta são 100 arquivos, o script não precisa verificar para cada arquivo se tem permissão para isso e não precisa executar para cada arquivo um trabalhador PHP.

Isso é possível?

    
por brokedid 22.09.2012 / 18:49

1 resposta

3

Sim - você pode usar expressões regulares com 'captures' em location e referenciá-las em location block, assim:

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

Tags