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