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

Текущий пограничный кеш (вот как это работает сейчас):

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;

        }
0
задан 9 June 2016 в 08:34
1 ответ

Ваше приложение для обработки изображений должно отправить HTTP-заголовок Content-Disposition, куда будет отправлено нужное имя файла. Таким образом, браузер пользователя будет использовать это имя файла вместо имени, полученного из URL запроса.

Кэш прокси Nginx сохранит заголовок Content-Disposition, после чего пользователи получат правильные имена файлов.

.
0
ответ дан 5 December 2019 в 10:18

Теги

Похожие вопросы