Fórum Root.cz
Hlavní témata => Server => Téma založeno: Ħαℓ₸℮ℵ ␏⫢ ⦚ 06. 10. 2022, 12:44:28
-
Zaráží mě, že v sites-enabled/tato.conf musím mít
(1)
location /Data/mounted/upload {
autoindex on ;
root /bla;
#nepomohlo ani
break ;
}
#(2)
location ~ ^(/Data(?!/mounted/upl)|/index2.php|/img|/forum) {
(3)
#nestačí:
location ~ ^(/Data|/index2.php|/img|/forum) {
Varianta 2 místo 3 mi logicky háže chybu pro adresy /Data/mounted, jelikož v obou direktivách location toho mám "víc", různé backendy
Jak funguje matchování location? MAtchnou se obě (1) a (2) protože vyhovují?
Je nějaké řešení, jak docílit chování (1)+(3), aniž bych musel zanášet (3) duplicitním negative lookahead patternem?
Něco aby když se matchne první location, se už dál nepokračovalo?
A na to navazuje další dotaz, if se zpracovává sekvenčně? Nebo nějak podivně? Protože se od něj odrazuje a dokonce prý může způsobovat segfault nebo neočávané chování.
Včemtkví zvláštnost a nebezpečí if? Nebo je ho bezpečné používat mimo location
Závisí vlastně na pořadí location?(tipuji že ne)
Závisí vlastně na pořadí if?(odpozorováno že ano)
-
Ano, zalezi na poradi location, pokud maji regulary. Pokud jsou jen staticke, tak na poradi nezalezi. A pokud jsou staticke i regulary, tak prednost ma regular pred statikou. Presne poradi lze dohledat na google.
If is evil.
-
WTF, takže statiku location /Data/mounted musím přepsat na location ~ /Data/mounted ... te gdo to vymyslel musel být geniál
-
WTF, takže statiku location /Data/mounted musím přepsat na location ~ /Data/mounted ... te gdo to vymyslel musel být geniál
Jak byste to udělal jinak? Statické vzory je možné programově seřadit tak, že ty specifičtější budou mít přednost – takže je nemusí ručně řadit uživatel. U regulárních výrazů nic takového udělat nejde – dokážete sestrojit milion regulárních výrazů, které vyhoví stejné cestě. Takže tam nezbývá nic jiného, než to nechat na uživateli, který vzor má mít přednost. Je logické pro to použít pořadí v konfiguraci (dělají to tak všichni), akorát se řekne, jestli vyhrává první nebo poslední.
Navíc je to popsané hned v druhém odstavci dokumentace: https://nginx.org/en/docs/http/ngx_http_core_module.html#location To je první místo, kam jste se měl podívat.