Puncte:0

Cum să imbricați două site-uri web în același bloc de server nginx

drapel br

Cu nginx, încerc să configurez două site-uri web statice pe același domeniu. Prima fiind la exemplu.com, iar celălalt fiind o mică aplicație React la exemplu.com/haiku. Cum se poate face acest lucru?

Am probleme pentru care foaia de stil și fișierele javascript pentru exemplu.com/haiku sunt solicitate de la principal exemplu.com. Deoarece toate URI-urile de resurse de pagină încep cu o bară oblică (de ex /static/style.css), nginx le procesează ca aparținând exemplu.com mai degrabă decât să le obțină de la /haiku.

Ambele site-uri web ocupă directoare separate pe server. exemplu.com este la /srv/http/domain, și exemplu.com/haiku este la /srv/http/haiku

Iată partea relevantă a blocului serverului meu nginx:

rădăcină /srv/http;
Locație / {
  rădăcină /srv/http/domain;
}
locație /haiku {
  alias /srv/http/haiku;
}

Mi-am făcut cercetările asupra acestor module nginx și înțeleg de ce acest lucru nu funcționează acum. Navigare către example.com/haiku/index.html servește pagina, dar referințele acesteia la /static/css/style.css și /static/js/main.js se lovesc de / bloc de locație. Am nevoie de un fel de rescriere internă care să dureze /static/css/style.css si schimba-l in /haiku/static/css/style.css, unde se află fișierul. Nu găsesc întrebări similare pe Google sau SE.

Știu că pot rezolva cu ușurință acest lucru prin obținerea unui alt domeniu. Știu că pot configura și un subdomeniu, dar vreau în mod special să știu dacă acest lucru se poate face prin imbricarea unui site web static la cererea unui alt site web fără configurare DNS.

De asemenea, nu vreau să schimb doar URI-urile pentru fișierele css și js, deoarece vreau să pot implementa această mică aplicație React pe orice rădăcină de bloc de server.

Puncte:1
drapel us

Modul standard de a facilita acest lucru este configurarea adresei URL rădăcină a aplicației astfel încât să genereze URL-uri corecte de resurse în primul rând.

https://skryvets.com/blog/2018/09/20/an-elegant-solution-of-deploying-react-app-into-a-subdirectory/ arată o abordare pentru React pentru a configura adresa URL de bază a aplicației.

Nu este o idee bună să faceți nicio rescriere a HTML pe partea nginx. Va consuma resurse suplimentare și poate provoca efecte secundare nedorite.

Justin St-Amant avatar
drapel br
Da, schimbarea adresei URL rădăcină a aplicației a fost soluția pentru problema mea. Documentația Create React App despre schimbarea URL-ului rădăcină a fost, de asemenea, valoroasă pentru mine: https://create-react-app.dev/docs/deployment/#building-for-relative-paths

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.