Der Nginx-config für single-page-app mit HTML5-App-Cache
Ich versuche zu bauen, single page app nutzt HTML5 App-Cache, die cache-eine ganz neue version der app für jede eindeutige URL, damit ich umleiten muss jeder /
und habe mir die app leitet Sie danach (das ist die Lösung devdocs.io).
Hier ist meine nginx config. Ich möchte, dass alle Anfragen an eine Datei senden, wenn es existiert, Umleitung auf meine API auf /auth
und /api
und leitet alle anderen Anfragen an index.html. Warum ist die folgende Konfiguration verursacht mein browser zu sagen, dass es eine redirect-Schleife? Wenn der Nutzer die Lage block #2 und seine route passt nicht auf eine statische Datei, die er geschickt, um die Lage block #3, die leitet ihn an "/" die schlagen sollte, location-block #1 und servieren index.html, richtig? Was verursacht die redirect-Schleife hier? Gibt es einen besseren Weg, dies zu erreichen?
root /files/whatever/public;
index index.html;
# If the location is exactly "/", send index.html.
location = /{
try_files $uri /index.html;
}
location /{
try_files $uri @redirectToIndex;
}
# Set the cookie of the initialPath and redirect to "/".
location @redirectToIndex {
add_header Set-Cookie "initialPath=$request_uri; path=/";
return 302 $scheme://$host/;
}
# Proxy requests to "/auth" and "/api" to the server.
location ~* (^\/auth)|(^\/api) {
proxy_pass http://application_upstream;
proxy_redirect off;
}
- Sie haben
root
Richtlinie undindex.html
- Datei? - Check-Fehler.melden - Ja. Frage aktualisiert, um es.
- Nichts in meinem error-log.
- Haben Sie mit
curl
(oderwget
)? Kann dein browser-Cache falsch umgeleitet... curl
gibt mir ein paar nginx HTML<center><h1>302 Found</h1></center><hr><center>nginx/1.8.0</center>
undwget
sagt "20 Weiterleitungen überschritten". Keine caching-Probleme hier.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Loop Meldung deutet darauf hin, dass /files/whatever/public/index.html existiert nicht, so dass die try_files in der Lage /nicht finden, $uri, wenn es gleich
/index.html
, so die try_files immer intern leitet diese Anfragen an die @ Position, die die externe Umleitung.Es sei denn, Sie haben ein komplizierter setup als Sie umrissen habe, ich glaube nicht, dass Sie brauchen, um so viel zu tun. Sollten Sie nicht brauchen externe Umleitungen (oder auch interne Weiterleitungen) oder server-seitige cookie senden für eine Datei js app. Die regex-match für die app und die api war nicht ganz richtig, entweder.
/
, und dann umleiten Sie innerhalb der JavaScript-frontend.http://site/path1/path2/foo
,http://site/#path1/path2/foo
. Das ist die einzige Möglichkeit die ich denken kann, zu vermeiden, entweder doppelte html5-app-caching oder schrecklich ineffizient externe Umleitungen.