У меня вопрос о правилах перезаписи nginx.
Мой код выглядит следующим образом
location ~* \.(jpg)$ {
add_header Pragma public;
add_header Cache-Control "public";
add_header Content-Type image/jpeg;
expires 30d;
add_header Capture1 $1;
add_header Capture2 $2;
add_header X-uri "$uri";
try_files $uri @find_file;
root /data;
}
location @find_file {
add_header Pragma public;
add_header Cache-Control "public";
add_header Content-Type image/jpeg;
expires 30d;
rewrite ^/(.*(\w)(\w)(\w))\.jpg$ /d/$4/$3/$2/$1.jpg break;
}
Но файлов в перезаписи может не оказаться
Итак, я хочу показать php
try_files $uri @find_file /test.php?uri=$uri;
Однако это приведет к запуску php, даже если в @find_file есть файл.
Хочу уменьшить частоту запуска php.
Что я должен делать?
(Когда вы запускаете php, php помещает файл в это место. @ Find_file)
Наверное, самое простое решение - заменить rewrite
заявление с try_files
срок и использовать снимки из location
заявление.
Например:
root /data;
location ~* ^/(.*(\w)(\w)(\w))\.jpg$
add_header Pragma public;
add_header Cache-Control "public";
add_header Content-Type image/jpeg;
expires 30d;
try_files $uri /d/$4/$3/$2/$1.jpg /test.php?uri=$uri;
}
Видеть этот документ для подробностей.