
Aqui está minha configuração do Nginx, resumidamente:
...
server {
listen 80;
server_name whatever;
root /var/www/;
location /api/1.0 {
...
`proxy_pass http://localhost:8000/;
}
location /api/2.0 {
...
proxy_pass http://localhost:8080/;
}
location / {
root /var/www/static/;
default_type text/html;
try_files $uri $uri/index.html index.html;
}
}
Se eu for agora localhost
e acrescentar um nome aleatório que não corresponda a nada em meus arquivos estáticos ou que signifique algo em qualquer um dos dois aplicativos (por exemplo http://localhost/whatever
), recebo um erro estranho em meu log:
14/09/2013 20:58:20 [erro] 28731#0: *2 open() "/var/wwwindex.html" falhou (2: Esse arquivo ou diretório não existe), cliente: 127.0.0.1, servidor: ec2 -54-234-175-21.compute-1.amazonaws.com, solicitação: "GET /whatever HTTP/1.1", host: "localhost"
Estou pensando que isso deve apenas refletir minha falta de compreensão, porque realmente não tenho ideia de por que o nginx está tentando acessar "/var/wwwindex.html". Observe que não quero que essa solicitação seja bem-sucedida, só quero que ela falhe de uma maneira que eu entenda. O que exatamente está acontecendo? Pensamentos apreciados, obrigado antecipadamente!
Responder1
Você try_files
termina com index.html
, que é anexado ao root
(e o final /
de the root
é ignorado). Adicione um /
a ele.
try_files $uri $uri/index.html /index.html;