@KirillTrueno

Как в Nginx указывать пути root и alias?

На сервере есть корневая директория сайта, и в ней вложенные поддиректории static и media, которые должны открываться напрямую через Nginx.

var
|__ www
    |__ domains
        |__ example.com
            |__ django-app
            |__ static
            |__ media


В настройках виртуальных хостов (conf.d) нужно прописать пути для static и media.

Вариант 1: для каждого location приходится указывать root c абсолютными путями.
server {
    ...
    location /static {
        root /var/www/domains/example.com/static;
    }
    location /media {
        root /var/www/domains/example.com/media;
    }
}


Вариант 2: путь в alias относительный (относительно пути root).
server {
    ...
    root /var/www/domains/example.com
    ...
    location /static {
        alias /static;
    }
    location /media {
        alias /media;
    }
}


Какой вариант правильный? Путь в alias строится относительно root или относительно корня linux?
  • Вопрос задан
  • 1683 просмотра
Решения вопроса 1
Lynn
@Lynn
nginx, js, css
Оба варианта неправильные.

В первом варианте запрос /static/file.png будет искать файл
/var/www/domains/example.com/static/static/file.png
.

Во втором варианте запрос /static/file.png будет искать файл /static/file.png.

Правильный вариант:
server {
    ...
    root /var/www/domains/example.com;
    ...

    location /static/ {
    }
    location /media/ {
    }
}


P.S. И лучше всегда указывать папки в location со слешом в конце. Что бы не думать потом почему запрос /mediaholding/about пытается найти файл, а не спроксироваться в django.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы