În general, rularea aplicației sub un prefix URI atunci când aplicația în sine nu se așteaptă că este un lucru complicat, iar singura soluție de încredere ar fi să repari/configurați aplicația, făcând-o să genereze toate legăturile de active/rute fie relative, fie inclusiv prefixul acesteia. este desfășurat sub. Aproape toate soluțiile existente sunt de a rescrie răspunsurile aplicației „din mers”, înlocuind linkurile generate cu cele noi. Un fel de răspuns generic este Aici, pot fi găsite câteva considerații suplimentare Aici.
Cu toate acestea, dacă este cu adevărat un SPA, să spunem o aplicație React care folosește ceva de genul HashRouter
Decat BrowserRouter
, o soluție bazată pe rescrierea condiționată conform cererii Referitor
Antetul HTTP este posibil:
Server {
...
dacă ($http_referer ~ ^https?://yourdomain.com/app1/) {
rescrie ^ /app1$uri;
}
dacă ($http_referer ~ ^https?://yourdomain.com/app2/) {
rescrie ^ /app2$uri;
}
...
locație /app1/ {
proxy_pass http://container1/;
}
locație /app2/ {
proxy_pass http://container2/;
}
}
Toate barele oblice folosite aici sunt folosite intenționat, eliminarea oricăreia dintre ele va sparge soluția!
Acest lucru nu se aplică pentru nimic altceva decât SPA (inclusiv aplicațiile care utilizează rutarea „virtuală” bazată pe API-ul istoric al browserului HTML5), deoarece logica de rescrire va fi întreruptă după prima tranziție de la o pagină la alta.