nginx - сопоставить домены с корневым каталогом документа

У меня есть несколько доменных имен и несколько корневых документов, например:

toto.exemple.com /var/www/exempleOne
titi.exemple.com /var/www/exempleTwo
[...]

В основном то, что я хочу сделать, - это использовать только один сервер block / vhost для всех доменов.

Я попытался использовать для этого карту nginx и сделал следующее:

map $host $docroot{
  toto.exemple.com /var/www/exempleOne;
  titi.exemple.com /var/www/exempleTwo;
}

server {
    listen 80;
    server_name _;
        location / {
          root   $docroot;
          expires           30d;
        }
}

Но это не работает, похоже, что nginx использует корневой каталог документа по умолчанию (/ etc / nginx / html /).

0
задан 5 September 2019 в 15:13
1 ответ

Вы можете попробовать использовать $ http_host в качестве переменной вместо $ host в карте .

Затем вы также можете использовать элемент по умолчанию в карте , установив его на некоторое значение по умолчанию.

Таким образом можно увидеть, оценивает ли nginx вообще карту для оператора root . Если nginx пытается получить данные из каталога по умолчанию ,тогда это означает, что что-то не так с переменной , которую использует карта .

Если она по-прежнему извлекается из корневого каталога nginx по умолчанию , то это означает, что nginx неправильно оценивает карта здесь.

Я бы также рекомендовал установить корень вне блока location / .

1
ответ дан 4 December 2019 в 15:37

Теги

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