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

nginx try_files со статическим изображением или откат к файлу php с перезаписью

location /image_mini {
#  try_files /static_images/$2.jpg;
  rewrite ^/image_mini/([^.]+)-00([0-9]+)\.jpg$ /image.php?a=$2 last;
}

Я использую это правило перезаписи для отображения изображений на моем веб-сайте. Например, если я хочу отобразить идентификатор изображения # 123456789, я бы использовал https://www.example.com/image_mini/some_cool_seo_keywords-00123456789.jpg

Затем image.php проверит, находится ли /static_images/00123456789.jpg в локальном кеше, в противном случае он создаст файл.

Я предполагаю, что я бы получил гораздо лучшую производительность, если бы nginx мог искать локальный статический файл перед откатом на image.php

Я попытался сделать это с помощью try_files, но я не уверен, как извлечь идентификатор изображения из URL-адреса, и я застрял здесь :( Любая помощь будет оценена

Вы можете использовать свое регулярное выражение в location заявление. Например:

location ~* ^/image_mini/[^.]+-00([0-9]+)\.jpg$ {
    try_files /static_images/$1.jpg /image.php?a=$1;
}

Обратите внимание, что оценка регулярного выражения location выписки заказываются. Видеть этот документ для большего. Также, этот документ о правильном синтаксисе для try_files.