Por que preciso de um 'try_files' para fazer a diretiva 'root' funcionar?

2

Eu estava tendo problemas para fazer com que o nginx localizasse os arquivos estáticos do meu front-end e adicionei uma instrução try_files aparentemente tautológica, que fez tudo funcionar.

  location /frontend {
      try_files $uri /;
  }

  root {{ static_root }};
  index /frontend/index.html;

  location / {
      rewrite ^.*$ /frontend/index.html break;
  }

Minha pergunta é: por que isso não funcionaria sem a primeira diretiva location /frontend ?

    
por mccc 02.05.2018 / 18:18

1 resposta

0

O rewrite é indiscriminado, aplica-se a todas as solicitações (até .css e .js arquivos). Ao adicionar um location separado, os URIs que começam com /frontend são protegidos do rewrite indiscriminado.

Você provavelmente conseguiria um resultado semelhante com:

root /path/to/root;

location / {
    try_files $uri $uri/ /frontend/index.html;
}

Veja este documento para saber mais.

    
por 02.05.2018 / 18:48

Tags