conflito de localização nginx para 2 aplicativos ember-cli em um domínio

3

Estou tentando configurar dois aplicativos ember-cli em um domínio no nginx.

http://example.com/
http://example.com/bar

O aplicativo 1 é armazenado em / var / www / foo e o aplicativo 2 é armazenado em / var / www / bar.

O primeiro prêmio é ter o ponto principal para / var / www / bar e tê-lo configurado para que / aponte para foo e / pontos para bar. Isto é principalmente para consistência na forma como as coisas são configuradas. No entanto, estou feliz em alterar a configuração apenas para que funcione.

Eu tenho o seguinte snippet nginx:

server {
    listen 80;
    server_name www.example.com;
    root /var/www/bar;

    location /bar {
        root /;
        try_files $uri $uri/ /index.html?/$request_uri;
    }

    location / {
        root /var/www/foo;
        try_files $uri /index.html?/$request_uri;
    }
}

Eu tentei o contrário, mas também não consegui fazê-lo funcionar. Parece que location / substitui a localização /bar/ . Se eu comentar a diretiva location / , então /bar funciona, mas obviamente não / . Vice versa também funciona. Como faço para que ambos funcionem juntos?

Nota : ember-cli não é realmente um fator contribuinte neste momento. Apenas a obtenção de arquivos index.html para o trabalho funcionará.

    
por Gevious 18.10.2014 / 09:30

1 resposta

2

O último parâmetro na diretiva try_files é um código de fallback, local ou URI. Nos dois últimos casos, o nginx faz um redirecionamento interno, então o comportamento esperado é ir para a localização / . Você também comete um erro na root diretiva da barra de localização, / irá corresponder à raiz do seu sistema de arquivos!

Você precisa alterar o URI de fallback para /bar/index.html?/$request_uri . Se você entender bem, você deseja veicular o index.html da barra em /var/www/bar/index.html . Duas soluções:

[1]

server {
    listen 80;
    server_name www.example.com;
    root /var/www;

    location /bar {
        try_files $uri $uri/ /bar/index.html?/$request_uri;
    }

    location / {
        root /var/www/foo;
        try_files $uri /index.html?/$request_uri;
    }
}

[2]

server {
    listen 80;
    server_name www.example.com;
    root /var/www/bar;

    location /bar/ {
        alias /var/www/bar/;
        try_files $uri $uri/ /bar/index.html?/$request_uri;
    }

    location / {
        root /var/www/foo;
        try_files $uri /index.html?/$request_uri;
    }
}
    
por 18.10.2014 / 10:18

Tags