Задать вопрос
@JunDevTest
Контакты: thejundev@gmail.com | @juniordev

Можно ли исправить это правило Nginx? Если да, то как?

Здравствуйте.
Есть правило Nginx, оно должно работать именно так. Естественно оно не работает, поскольку в конфигурации этого web-сервера запрещено вставлять логическую конструкцию If внутри Location, как впрочем и наоборот. Во всяком случае, встроенный чекер ( nginx -t ), указал мне на эту оплошность и неграмотность.

location ~* ^.+\.(jpeg|jpg|png|bmp)$ {
...
    if ($img_extension = ".webp"){
        location ~ /image-content/(.*) {
            add_header 'Content-Type' 'image/webp';
            try_files $uri /image-content/webp/image-content/${1}${img_extension} /webp-gen.php?source=$document_root$request_uri&image-content=image-content&$args;
        }
    }
...
}


Что здесь происходит? (Что должно происходить)
0. Если переменная $img_extension содержит значение ".webp", тогда выполняем условие.
1. На сервер поступает запрос вида https://example.org/image-content/uploads/test_ima....
2. Сервер ищет файл test_image.png.webp по uri /image-content/uploads/webp/test_image.png.webp.
3. Устанавливаем заголовок "image/webp".
4. Если он его находит, то возвращает ответ с этим файлом.
5. Если по uri /image-content/uploads/webp/test_image.png.webp его нет, тогда выполняется переадрессация на uri /webp-gen.php?source=$document_root$request_uri&image-content=image-content&$args.

Разделы по адресу /image-content/uploads/webp/ зеркально повторяют разделы /image-content/uploads/ окромя наличия директории webp.
  • Вопрос задан
  • 120 просмотров
Подписаться 1 Простой 1 комментарий
Пригласить эксперта
Ответы на вопрос 1
@Karpion
Может, проверять локацию в условиях? Как-то так:
if ($img_extension = ".webp" and location = ...)
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

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