Я начал с приложения React, которое обслуживается из корня nginx. Затем я последовал это руководство по обслуживанию приложения из подкаталога (/приложение
). Как было предложено здесь, я изменил свой конфиг nginx с этого:
место расположения / {
корень /usr/share/nginx/html;
try_files $uri $uri//index.html =404;
}
к этому:
местоположение/приложение {
псевдоним /usr/share/nginx/html;
try_files $uri $uri/ /app/index.html =404;
}
Это вроде работает - я могу перейти на https://localhost/app и получить все статические файлы, как и ожидалось. Моя проблема заключается в перезагрузке URL-адресов, которые контролируются React Router (т.е. отправка на сервер nginx URL-адреса, который включает части после /приложение
). Например, до изменения работали оба следующих пункта:
- https://localhost <-- работает
- https://localhost/auth/local <-- тоже работает
Первый просто вернул домашнюю страницу. Второй заставил nginx по умолчанию использовать index.html, а маршрутизатор React позаботился о внутреннем переходе на правильную страницу (/аутентификация/местный
).
После изменения первый запрос работает, а второй выдает ошибку 404:
- https://localhost/app <-- работает
- https://localhost/app/auth/local <-- сбой с 404
Добавив некоторые отладочные заголовки, я вижу, что после изменения во 2-м случае nginx вообще не выполняет блок.
Что я делаю не так?