Am început cu o aplicație React servită de la rădăcina nginx. Apoi am urmat acest ghid pentru a servi aplicația dintr-un subdirector (/app
). După cum s-a sugerat Aici, mi-am schimbat configurația nginx din aceasta:
Locație / {
root /usr/share/nginx/html;
try_files $uri $uri/ /index.html =404;
}
la acest:
locație /aplicație {
alias /usr/share/nginx/html;
try_files $uri $uri/ /app/index.html =404;
}
Acest lucru funcționează - pot să răsfoiesc la https://localhost/app și să obțin toate fișierele statice așa cum era de așteptat. Problema mea este cu reîncărcarea adreselor URL care sunt controlate de React Router (adică trimiterea serverului nginx a unui URL care include părți după /app
). De exemplu, înainte de schimbare, ambele dintre următoarele au funcționat:
- https://localhost <-- funcționează
- https://localhost/auth/local <-- funcționează și el
Primul a returnat pur și simplu pagina de pornire. Al doilea a făcut ca nginx să fie implicit la index.html, iar routerul React a avut grijă să navigheze intern la pagina corectă (/auth/local
).
După modificare, prima solicitare funcționează, dar a doua eșuează cu 404:
- https://localhost/app <-- funcționează
- https://localhost/app/auth/local <-- eșuează cu 404
Adăugând niște anteturi de depanare, văd că după modificare, în al 2-lea caz, nginx nu execută blocul deloc.
ce fac greșit?