Назад | Перейти на главную страницу

Перезапись try_files nginx rewrite

У меня вопрос о правилах перезаписи 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;
}

Видеть этот документ для подробностей.