
Hier ist meine Nginx-Konfiguration in Kürze:
...
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;
}
}
Wenn ich jetzt zu gehe localhost
und einen zufälligen Namen anhänge, der weder einer meiner statischen Dateien entspricht noch in einer der beiden Anwendungen etwas bedeutet (z. B. http://localhost/whatever
), erhalte ich einen merkwürdigen Fehler in meinem Protokoll:
14.09.2013 20:58:20 [Fehler] 28731#0: *2 open() "/var/wwwindex.html" fehlgeschlagen (2: Keine solche Datei oder kein solches Verzeichnis), Client: 127.0.0.1, Server: ec2-54-234-175-21.compute-1.amazonaws.com, Anfrage: "GET /whatever HTTP/1.1", Host: "localhost"
Ich denke, das spiegelt nur mein mangelndes Verständnis wider, denn ich habe wirklich keine Ahnung, warum nginx versucht, auf "/var/wwwindex.html" zuzugreifen. Beachten Sie, dass ich nicht möchte, dass diese Anfrage erfolgreich ist, sondern nur, dass sie auf eine Weise fehlschlägt, die ich verstehe. Was genau passiert hier? Gedanken sind willkommen, vielen Dank im Voraus!
Antwort1
Ihr try_files
endet mit index.html
, das an das angehängt wird root
(und das Ende /
von root
wird ignoriert). Fügen Sie ein /
hinzu.
try_files $uri $uri/index.html /index.html;