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

nginx Rewrite для CImage Cache

Настраиваю скрипт (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 заголовок, а затем пользователи получат правильные имена файлов.