2017-10-20 16 views
1

J'ai créé un emplacement dans mon fichier de configuration nginx:Nginx try_files ne fonctionne pas regexp

location ~* ^/resize/(.*)/(\d+)/(\d+)/(.*)\.(jpeg|jpg|png|gif)$ { 
    try_files /var/image-gallery/php/web/assert/$1/$4_$2_$3.$5 /resize.php?storage=$1&width=$2&height=$3&file=$4&ext=$5; 
} 

Si le fichier existe, je veux nginx le retourner. Sinon, je veux lancer un script qui est censé diffuser un contenu de fichier à la fin.

exemple de requête HTTP: http://host:8000/resize/storage3/100/100/28f686ecb64bbb0c90d824a4be08a1e9.jpeg

Emplacement du fichier:

$ file /var/image-gallery/php/web/assert/storage3/28f686ecb64bbb0c90d824a4be08a1e9_100_100.jpeg 
/var/image-gallery/php/web/assert/storage3/28f686ecb64bbb0c90d824a4be08a1e9_100_100.jpeg: JPEG image data, JFIF standard 1.01, aspect ratio, density 1x1, segment length 16, baseline, precision 8, 100x100, frames 3 

Pourquoi nginx ne peut pas voir le fichier sur le disque?

+0

Pourriez-vous également nous montrer les journaux nginx? –

+0

@IvanVelichko, voir ma réponse :) – dimka3210

Répondre

1

Résolu! Nginx n'utilise pas de chemins absolus.

Fix:

location ~* ^/resize/(.*)/(\d+)/(\d+)/(.*)\.(jpeg|jpg|png|gif)$ { 
    root /var/image-gallery/php/web/assert; 
    try_files /$1/$4_$2_$3.$5 /resize.php?storage=$1&width=$2&height=$3&file=$4&ext=$5; 
}