Я пытаюсь создать одностраничное приложение, использующее HTML5 App Cache, в котором будет кэшироваться вся новая версия приложения для каждого отдельного URL-адреса, поэтому я должен перенаправить всех на /
и после этого мое приложение будет маршрутизировать их (это решение, используемое на devdocs.io).
Здесь моя конфигурация nginx. Я хочу, чтобы все запросы отправляли файл, если он существует, перенаправляют на мой API в /auth
и /api
и перенаправляют все остальные запросы в index.html. Почему следующая конфигурация заставляет мой браузер сказать, что существует цикл перенаправления? Если пользователь попадает в блок местоположения №2, а его маршрут не соответствует статическому файлу, он отправляется в блок №3, который перенаправляет его на "/", который должен попасть в блок №1 и служить index.html, правильно? Что вызывает цикл перенаправления здесь? Есть ли лучший способ сделать это?
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;
}