In meiner Anwendung möchte ich, dass der Speicherort "/" eine statische index.html-Datei zurückgibt, dass "/ static" statische Dateien aus einem Ordner bereitstellt und dass alle anderen Anforderungen 404 NOT FOUND zurückgeben. Zu einem späteren Zeitpunkt werde ich alle anderen Anforderungen an einen WSGI-Server umleiten.
Dies ist derzeit meine Konfiguration:
# Dev server.
server {
listen 1337;
charset UTF-8;
location / {
rewrite ^ static/index_debug.html break;
}
location /static {
alias /home/tomas/projects/streamcore/static;
}
}
Der statische Ordner funktioniert einwandfrei, aber "/" gibt 404 NOT FOUND zurück. Ich habe auch versucht:
alias /home/tomas/projects/streamcore/static/index_debug.html;
Im Standortblock gibt dies jedoch 500 INTERNAL SERVER ERROR zurück. Es scheint, als würde alias
es keine einzelnen Dateien mögen. Zusätzlich habe ich versucht:
try_files static/index_debug.html;
Dies verhindert jedoch, dass der Server mit dem Fehler "Ungültige Anzahl von Argumenten in der Anweisung try_files" beginnt. Anscheinend try_files
müssen Sie tatsächlich mehr als eine Datei ausprobieren, was nicht das Verhalten ist, nach dem ich suche.
Meine Frage lautet also: Wie konfiguriere ich einen Standortblock, um immer eine statische Datei zurückzugeben?
EDIT: Ich habe aus anderen Antworten gesehen, dass alias
tatsächlich eine einzelne Datei als Argument akzeptiert werden sollte, also habe ich versucht:
location = / {
alias /home/tomas/projects/streamcore/static/index_debug.html;
}
Aber ich bekomme immer noch nur 500 INTERNAL SERVER ERROR. Das Fehlerprotokoll für die Anforderung "/" lautet:
[alert] 28112 # 0: * 7 "/home/tomas/projects/streamcore/static/index_debug.htmlindex.html" ist kein Verzeichnis
Warum wird versucht, "index_debug.htmlindex.html" zu öffnen? Ich verwende die index
Richtlinie nirgendwo.
quelle
try_files static/index_debug.html static/index_debug.html;
location =/
ich Ihren Vorschlag versuche,location /
bekomme ich 404 NOT FOUND, mit 500 INTERNAL SERVER ERROR.location / { return 404; }
location = / {Index /home/tomas/projects/streamcore/static/index_debug.html;}
Antworten:
Habe das gerade getestet und es funktioniert bei mir:
Die Datei
/tmp/root/static/index_debug.html
existiert natürlich :)Ich kann jede URL treffen und bekomme nur die statische Seite.
quelle
Sie können try_files und eine Umleitung zu einem benannten Speicherort mit Umschreiben verwenden. So was:
Wenn eine Datei darin vorhanden ist
/tmp/root
, wird sie zugestellt, andernfalls wird uri neu geschriebenstatic/index_debug.html
und zugestellt .quelle