Nginx - root versus alias, para servir arquivos únicos?

52

Após muitas horas recebendo nginx para exibir arquivos únicos, como robots.txt (dica: limpar o cache do seu navegador todas as vezes), acabei de duas formas diferentes, uma usando o alias e outra usando a raiz diretiva, assim:

location /robots.txt { alias /home/www/static/robots.txt; }
location /robots.txt { root /home/www/static/;  }

Existe alguma diferença funcional entre os dois? Ou problemas de segurança? Qualquer conflito com outras diretivas? (Ambos pareciam bem com outra localização / estática). Ou algum motivo para escolher um sobre o outro?

Nota - Eu não usei ao mesmo tempo :) Eu tentei cada um, um de cada vez, e ambos funcionaram. Não estou perguntando como os dois interagem juntos no mesmo arquivo, mas qual seria o melhor a ser usado.

    
por Cyclops 08.06.2011 / 16:04

3 respostas

63

Bem, essas duas diretivas são um pouco diferentes porque você não usa a correspondência exata no último caso. Portanto, /robots.txt1111 também corresponderá à sua segunda localização.
location =/robots.txt { root /home/www/static/; } é um equivalente funcional exato da sua primeira diretiva.

    
por 08.06.2011 / 16:30
33

Sim, há uma diferença: com "alias" você pode .. bem alias para outro nome de arquivo, como

location /robots.txt { alias /home/www/static/any-filename.txt; }

enquanto

location /robots.txt { root /home/www/static/; }

força você a nomear seu arquivo no servidor também robots.txt. Eu uso a primeira opção, pois gosto de nomear meus arquivos de robôs no meu servidor como tld.domain.subdomain-robots.txt; por exemplo

location /robots.txt { alias /home/www/static/ch.notex.static-robots.txt; }
    
por 04.09.2012 / 16:47
0

Há uma diferença quando o alias é para um diretório inteiro.

    location ^~ /data/ { alias /home/www/static/data/; }

funcionará, enquanto

    location ^~ /data/ { root /home/www/static/data/; }

não serve. Isso teria que ser

    location ^~ /data/ { root /home/www/static/; }

(Fácil confundir)

    
por 21.05.2018 / 22:13