nginx location regex: variable inconnue "1"

Je veux faire des videos téléchargeables, mais ma stratégie ne semble pas fonctionner …

location ~* ^/(this-video.mp4)(/.*)$ { alias /some/path/this-video.mp4; add_header Content-Type 'video/mp4'; if ( $2 = "/dl" ) { add_header Content-Disposition 'attachment; filename="$1"'; } } 

Erreur:

# nginx -t

nginx: [emerg] unknown "1" variable nginx: file de configuration /etc/nginx/nginx.conf test échoué

 # nginx -v nginx version: nginx/1.6.2 

Une idée de ce que j'ai fait mal?

EDIT :

BTW, celui-ci passe le test:

  location ~* ^/(this-video.mp4)(/.*)$ { alias /some/path/$1; add_header Content-Type 'video/mp4'; #if ( $2 = "/dl" ) { # add_header Content-Disposition 'attachment; filename="$1"'; #} } # nginx -t nginx: the configuration file /etc/nginx/nginx.conf syntax is ok nginx: configuration file /etc/nginx/nginx.conf test is successful 

Donc, il doit avoir quelque chose à voir avec des citations?

EDIT2

Nginx docs indique:

Une condition peut être l'une des suivantes:

un nom de variable; false si la valeur d'une variable est une string vide ou "0";

Donc, si /dl n'est pas fourni dans l'url, alors $2 devrait-il être une string vide?

Le problème semble être que les captures numériques ne le font pas par le bloc if , vraisemblablement parce que la condition if peut aussi être une nouvelle expression régulière. Vous pouvez résoudre le problème en utilisant des captures nommées, par exemple:

 location ~* ^/(?<filename>.+\.mp4)(?<suffix>/.*)$ { ... } 

Cependant, il n'est pas conseillé d'utiliser certains types de blocs if , alors vous pourriez envisager d'utiliser deux blocs de localization à la place:

 location ~* ^/(.+\.mp4)/dl$ { alias /some/path/$1; add_header Content-Type 'video/mp4'; add_header Content-Disposition 'attachment; filename="$1"'; } location ~* ^/(.+\.mp4) { alias /some/path/$1; add_header Content-Type 'video/mp4'; } 

Ou quelque chose de plus simple pour le deuxième location, le cas échéant, comme un location de préfixe contenant une directive root .