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

Nginx - изменить корневой каталог на основе имени сервера?

Я пытаюсь сэкономить время на своей машине разработки, не создавая новую конфигурацию сервера nginx для каждого нового тестируемого сайта. Мне интересно, есть ли способ для nginx изменить корневой каталог на основе домена, который я загружаю.

Итак, если у меня есть

mysite.loc
myothersite.loc
something.loc

Nginx заглянет внутрь

www/mysite.loc
www/myothersite.loc
www/something.loc

Это позволило бы мне тестировать новые вещи на фиктивных доменах немного быстрее, поскольку мне не нужно возиться с новой конфигурацией / etc / nginx / sites-available для каждого из них.

server {
    listen 80;
    server_name *.loc;
    root /www/$host;
    index index.html;
}

Это возможно? Есть другой способ сделать это?

ты также мог бы сделать

  server_name _; 
  root   /opt/railo/tomcat/webapps/$host;

Не уверен, что это хорошая идея, но я ее протестировал, и она работает.

В конфигурация nginx есть кое-что, что может вам помочь:

server {
  server_name   ~^(www\.)?(?<domain>.+)$;
  root  /sites/$domain;
}

Я думаю, что это именно то, что вам нужно, верно? Ищи названные захваты чтобы добраться до этой части документации, но я призываю вас прочитать все описание server_name.

Так как корень Директива не допускается в условии if. Если у вас сложное суждение, обратитесь к этому решению.

set $PROJECT "release";
if ($host ~ "beta.my.site") {
    set $PROJECT "beta";
}
root /home/northtree/$PROJECT/;