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

Правило регулярного выражения Nginx для кеширования изображений переопределяет корневой блок

Моя установка nginx содержит следующие правила расположения:

    location ~*  \.(jpg|jpeg|png|gif|ico|css|js|pdf)$ {
        expires 7d;
    }

    location /data/ {
            root /mnt/data;
    }

Проблема в том, что когда я пытаюсь получить доступ к одному из следующих файлов (jpg | jpeg | png | gif | ico | css | js | pdf) в папке / data /, я получаю ошибку 404 Not Found, потому что первое правило местоположения отменяет второй. Я пробовал сделать что-то вроде этого:

    location ~* /data/.*\.jpg$ {
            root /mnt/data;
            expires 7d;
    }

Но, похоже, это не работает. Не могли бы вы помочь мне, какие решения доступны для меня в этом случае?

Решения:

# 1 Дублирование правила

location ~*  \.(jpg|jpeg|png|gif|ico|css|js|pdf)$ {
    expires 7d;
}

location /data/ {
    root /mnt/data;

    location ~*  \.(jpg|jpeg|png|gif|ico|css|js|pdf)$ {
        expires 7d;
    }
}

# 2 Символическая ссылка

Вы можете создать символическую ссылку: $document_root/data -> /mnt/data.