Как прописать location nginx чтобы использовать одну папку для всех сайтов?
У меня есть 5 сайтов на которых я использую графику из папки images, как настроить конфиг Nginx для доменов, чтобы не заливать в каждый сайт папку Images , а обращаться к общей папке для всех доменов, которая будет располагаться по пути/var/www/images
dodo512, Сработало!
Попробовал по аналогии сделать для директории database где php файл (adminer.php)
location ^~ /database {
root /var/www;
}
Но при попытки обратиться к файлу, открывается его содержимое, если файл adminer.php в корне домена, то открывается нормально, как правильно сделать локейшн для директории в которой php файл?
Сюда попадают запросы не совпавшие с другими location.
try_files проверяет существование запрошенного файла и если он не найден перенапрвляет запрос в /index.php
По поводу "^~". Если у совпавшего префиксного location’а максимальной длины указан модификатор “^~”, то регулярные выражения не проверяются. location ^~ /database { такая конструкция ловит запросы начинающиеся на /database
location ^~ / { такой вариант ловит любые запросы начинающиеся на /, т.е. все запросы к сайту.
Не очень понимаю какой результат планируете получить.
Данное правило не срабатывает на страницах, которые формата:
domain.ru/category/
т.е страница где есть в конце слеш в конце урла, ссылка до картинки приобретает вид:
domen.ru/category/images/test.jpg и сооответсвенно не находит картинку. Как подправить правило?
Pista, нужно подправить не правило, а путь к картинкам.
Сейчас путь к картинкам прописан так src="images/test.jpg"
А нужно указать путь от корня сайта src="/images/test.jpg"
Т.е. просто добавить слеш.
Pista, ну если сам движок сайта ставит такие ссылки /ИМЯ_КАТЕГОРИИ/images/test.jpg, то исправить можно добавлением rewrite ^/[^/]+(/images/.+) $1;
Ставить прямо в блок server.
Что мешает сделать symlink с именем images в каждую директорию сайта с реальной директории?
Никакие дополнительные движения со стороны nginx не нужны будут.