nginx local redireciona para pasta com nome como domínio solicitado

1

Sou novo no nginx e quero fazer isso:

If the URL contains "/assets" redirect to "/communities/$url_domain"

Em outras palavras:

Requested: "http://www.cats.com/assets/superfile.png"
Redirected:"http://www.cats.com/communities/cats.com/superfile.png"

É algo super simples, mas não está funcionando.

O que eu fiz

location /assets {
    root /communities/$host;
}

Mas sempre que tento acessar um arquivo de / assets, obtenho um

404 Not Found

nginx/1.8.1

O que estou fazendo de errado?
Obrigado!

EDITAR:

Eu ativei os logs e vi isso:

2016/02/10 17:27:16 [error] 31#0: *1 open() "/communities/www.cats.com/assets/superfile.png" failed (2: No such file or directory), client: 192.168.1.254, server: _, request: "GET /assets/superfile.png HTTP/1.1", host: "www.cats.com"

Vou investigar mais se conseguir extrair a parte do domínio da url

EDIT2 :
Estrutura de diretórios

/
--/communities/
--------------/cats.com/
---------------------superfile.png
--------------/dogs.com/
---------------------superfile.png

Então, por exemplo:

  1. Os usuários solicitarão este URL www.cats.com/assets/superfile.png

  2. Os usuários verão o mesmo URL.

  3. O Nginx internamente procurará: www.cats.com/communities/cats.com/superfile.png
por Tomas Prado 10.02.2016 / 17:21

1 resposta

1

Você precisa usar um alias :

location /assets/ {
    alias /communities/$host/;
}
    
por 10.02.2016 / 20:05

Tags