Configuração de host virtual dinâmico com base na estrutura de pastas

3

Considerando que tenho algo assim:

    /sites/foo/a1
    /sites/foo/a2
    /sites/foo/a3
    /sites/bar/b1
    /sites/bar/b2

E quero acessá-los assim:

foo.a1.mydomain.com

ou (se o último não funcionar)

foo-a1.mydomain.com

Como posso criar hosts virtuais dinamicamente no nginx para aceitar ir para essas pastas?

    
por vinnylinux 05.11.2015 / 19:43

1 resposta

4

Isso pode ser feito pelo seguinte nginx conf:

server {
    listen 80;
    server_name mydomain.com *.mydomain.com;
    set $path "default";
    if ($host ~* ^([a-z0-9-]+)\.([a-z0-9-]+)\.mydomain.com$) {
        set $path "$1/$2";
    }
    root /sites/$path;
}

O Nginx define a variável $path de acordo com os agrupamentos na expressão regular correspondidos com a variável $host , que é definida automaticamente pelo nginx (consulte Embedded Variables ). Definindo inicialmente $path como "padrão", você pode veicular o conteúdo do diretório /sties/default caso o $host não corresponda ao regex.

Como alternativa, você pode usar correspondência de expressão regular na diretiva server_name . Consulte Nomes de servidores Nginx para obter mais informações.

    
por 10.11.2015 / 18:04

Tags