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
.