Я настраиваю сценарий ( http://dbwebb.se/opensource/cimage ) для обработки изображений, и я ' Я хочу кэшировать результирующий вывод изображения. У меня эта часть работает нормально.
Проблема, с которой я сталкиваюсь, - это когда кто-то скачивает изображение из кеша. Вопросительный знак в строке запроса передается по URL-адресу прокси, поэтому загруженное изображение имеет имя файла по умолчанию «test.jpg & height = 200», которое не открывается должным образом в Windows без его переименования.
Мне нужно установить создать какое-то правило перезаписи, чтобы первое "?" символ меняется на "&". Это также должно было бы работать, если бы запрос был просто для имени файла без каких-либо дополнительных параметров.
Что мне нужно добавить, чтобы сделать URL-адрес доступным с помощью «?», Но отправить на сервер как «& "?
Источник
http://origin.example.com/img.php?src=folder1/test.jpg& height = 200
Текущий пограничный кеш (вот как это работает сейчас):
http://cdn.example.com/dynimg/folder1/test.jpg&height=200
Желаемый пограничный кеш:
http://cdn.example.com/dynimg/folder1/test.jpg?height=200 http://cdn.example.com/dynimg/folder1/test.jpg
nginx config (важная область ):
location /dynimg/ {
expires 14d;
proxy_pass http://origin.example.com/img.php?src=;
proxy_cache_valid 200 302 2880m;
proxy_cache_valid 404 1m;
}
Ваше приложение для обработки изображений должно отправить HTTP-заголовок Content-Disposition
, куда будет отправлено нужное имя файла. Таким образом, браузер пользователя будет использовать это имя файла вместо имени, полученного из URL запроса.
Кэш прокси Nginx сохранит заголовок Content-Disposition
, после чего пользователи получат правильные имена файлов.