W mojej aplikacji chcę, aby lokalizacja „/” zwróciła statyczny plik index.html, chcę, aby „/ static” obsługiwał pliki statyczne z folderu i chcę, aby wszystkie inne żądania zwróciły 404 NIE ZNALEZIONO. W późniejszym czasie zamierzam przekierować wszystkie pozostałe żądania do serwera WSGI.
To jest obecnie moja konfiguracja:
# Dev server.
server {
listen 1337;
charset UTF-8;
location / {
rewrite ^ static/index_debug.html break;
}
location /static {
alias /home/tomas/projects/streamcore/static;
}
}
Folder statyczny działa idealnie, ale „/” zwraca 404 NIE ZNALEZIONO. Próbowałem też:
alias /home/tomas/projects/streamcore/static/index_debug.html;
W bloku lokalizacji, ale zwraca 500 BŁĄD SERWERA WEWNĘTRZNEGO. Wygląda na to, alias
że nie lubi pojedynczych plików. Dodatkowo próbowałem:
try_files static/index_debug.html;
Ale to powstrzymuje serwer od rozpoczęcia błędu „nieprawidłowa liczba argumentów w dyrektywie try_files”. Najwyraźniej try_files
faktycznie wymaga wypróbowania więcej niż jednego pliku, czego nie szukam.
Więc moje pytanie brzmi: w jaki sposób skonfigurować blok lokalizacji, aby zawsze zwracał plik statyczny?
EDYCJA: Widziałem z innych odpowiedzi, które alias
rzeczywiście powinny zaakceptować pojedynczy plik jako argument, więc spróbowałem:
location = / {
alias /home/tomas/projects/streamcore/static/index_debug.html;
}
Ale nadal dostaję tylko 500 BŁĘDÓW SERWERA WEWNĘTRZNEGO. Dziennik błędów dla żądania „/” mówi:
[alert] 28112 # 0: * 7 „/home/tomas/projects/streamcore/static/index_debug.htmlindex.html” nie jest katalogiem
Dlaczego próbuje otworzyć plik „index_debug.htmlindex.html”? Nigdzie nie używam tej index
dyrektywy.
location =/
, otrzymuję 404 NIE ZNALEZIONO, location /
otrzymuję 500 BŁĄD SERWERA WEWNĘTRZNEGO.
location / { return 404; }
location = / {Index /home/tomas/projects/streamcore/static/index_debug.html;}
try_files static/index_debug.html static/index_debug.html;