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;
}
}