Puncte:2

Cum să mapați o locație către o cale în NGINX

drapel vn

Am o configurare nginx în care trebuie să mapez anumite căi URL către căile serverului. De exemplu am nevoie example.test/myapp/ pentru a merge la următorul director din server: /apps/myapp/web

Am încercat să adaug următorul bloc de locație:

locație /myapp/
{
    root /apps/myapp/web;
}

dar dacă mă duc la example.test/myapp/ sau exemplu.test/aplicația mea Primesc un 404.

Din câte îmi pot da seama conform docs această locație ar trebui să captureze orice cu o cale care începe cu /myapp/ și este singurul bloc de locație din server, așa că nu există șanse de conflict. De asemenea, am încercat să schimb locația pentru a indica rădăcină (de ex. Locație /) și funcționează bine, așa că nu este o problemă a căii greșite a serverului sau a fișierelor lipsă. Ce îmi lipsește?

Puncte:5
drapel us

nginx rezolvă căile fișierelor utilizând următoarea strategie:

  1. Utilizați calea de la rădăcină directivă
  2. Adăugați URI de la cerere după directivă.

Acum, în cazul tău:

  1. rădăcină este /apps/myapp/web.
  2. URI de la example.test/myapp/ este /myapp/.

Prin urmare, nginx caută fișiere în /apps/myapp/web/myapp/ director pentru acea cerere.

Dacă vrei asta /myapp/ URI va primi fișiere de la /apps/myapp/web/ director, trebuie să utilizați alias directivă:

locație /myapp/ {
    alias /apps/myapp/web/;
}
drapel vn
Mulțumiri! Unde am fost întors este cu exemplul din documente în care se spune: `location ~ \.(mp3|mp4) { root /www/media; }` va returna toate fișierele video la `www/media`. Deci, locațiile prefixului adaugă URI-ul, dar locațiile expresiilor regulate nu?
drapel us
Da, expresiile regulate nu atașează URI-ul, deoarece este dificil să se determine care parte a potrivirii expresiei regulate ar trebui să fie atașată.
drapel co
@Mattia Nu, locațiile regex urmează aceeași regulă ca și blocurile de locații normale, adresa URL `/myapp/test.mp4`, rădăcina `/www/media` devine `/www/media/myapp/test.mp4`
drapel vn
utilizarea alias-ului are ca rezultat returnarea 403s pentru tot. (Știu că nu este de fapt o problemă de permisiuni, deoarece am putut să serverez fișierele cu alte blocuri de locație). A fost remediat prin adăugarea unei bare oblice la alias: `alias /apps/myapp/web/`. Nu sunt sigur de ce asta...
drapel us
Interesant. Eu însumi nu folosesc `alias`, așa că nu știam că necesită o bară oblică la sfârșit. Bine că v-ați dat seama, mi-am actualizat răspunsul.

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.