Nginx - Altera o diretório raiz com base no server_name?

5

Estou tentando economizar algum tempo na minha máquina de desenvolvimento, não criando uma nova configuração de servidor nginx para cada novo site que eu testar. Eu estou querendo saber se existe uma maneira para o nginx alterar o diretório raiz com base no domínio que estou carregando.

Então, se eu tiver

mysite.loc
myothersite.loc
something.loc

O Nginx irá olhar para dentro

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

Isso permitiria que eu testasse coisas novas em domínios simulados um pouco mais rápido, já que não tenho que mexer com uma nova configuração / etc / nginx / sites-available para cada um.

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

Isso é possível? Existe outra maneira de fazer isso?

    
por Xeoncross 28.02.2011 / 04:17

3 respostas

5

você também pode fazer

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

Não tenho certeza se é uma boa ideia, mas testei e funciona.

    
por 09.11.2012 / 21:59
3

A configuração do nginx tem algo que pode ajudá-lo:

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

Eu acho que é exatamente o que você quer, certo? Procure por capturas nomeadas para chegar a esta parte da documentação, mas peço-lhe que leia toda a descrição de server_name .

    
por 28.02.2011 / 04:32
2

Como a diretiva root não é permitida na condição if. Se você tiver um julgamento complicado, consulte essa solução.

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

Tags