У меня есть приложение Rails, которое генерирует много изображений; т.е. контроллер изображений с действием show выбирает изображение из SAN и обслуживает его. У меня есть страница caches_, которая надежно сохраняет копию файла в произвольном месте; RAILS_ROOT + / public / cache. Файлы там и выглядят нормально.
Я обслуживаю приложение через nginx, и оно, кажется, работает нормально, но я не могу заставить его посылать эти кэшированные файлы изображений вместо того, чтобы начинать действие rails. Я довольно новичок в nginx и уже некоторое время исследую его, но неважно, что я пытаюсь, это не работает - я делаю что-то в корне неправильно.
Чтобы уточнить, у меня есть URI, как это:
/images/show/123.jpg
файл может существовать здесь:
/cache/images/show/123.jpg
Как я могу заставить nginx обслуживать этот файл и не передавать запрос?
Вот неполный список того, что я пробовал:
if (-f /cache$request_filename) {
rewrite (.*) /cache$1 break;
break;
}
if (-f /cache$uri.jpg) {
rewrite (.*) /cache$1.jpg break;
}
if (-f /cache/images/show/$request_filename) {
rewrite (.*) /cache/images/show/$1.jpg break;
}
Есть идеи?
обновление: я ответил на свой вопрос. Правильное правило было:
if (-f $document_root/cache$request_uri) {
rewrite (.*) /cache$1 break;
}