Fórum Root.cz
Hlavní témata => Server => Téma založeno: Rhinox 10. 01. 2022, 20:20:58
-
Potrebuju pro Nginx udelat to, co pro Apache dela prikaz
Alias /subdir /somewhere/else/subdir
Udelal sem to takhle:
location /subdir/ { alias /somewhere/else/subdir/; }
Jenze z nejakeho duvodu to nefunguje. Dam treba na web-server pozadavku...
http://www.domena.tld/subdir/test.html
...a porad dostavam "404 not found". Pritom ten soubor tam je, a vse ostatni na web-strance funguje. Ja to nechapu. Co delam spatne? Nebo je nejakej jinej lepsi spusob jak aliasovat adresar pro nginx?
-
Přesně takhle to funguje a používá se to běžně. Máte určitě chybu v cestách, podívejte se do logu. Tam je napsáno, kde se snaží Nginx ten soubor hledat a bude hned jasné, proč vám ho nedává.
-
Tak sem se dostal o fous dal. Web-server totiz najde index.html, ale 404 zahlasi u index.php (i kdyz tam jsou oba).
To musim jeste uvnitr "location ... {alias}" znovu definovat spracovani php??? To sem u zadne jine direktivy "location" delat nemusel, mam to jenom jednou uplne nahoru "location ~ \.php$ {...}" a vsechno jine funguje...
A i kdyz sem to upravil do teto podoby:
location /subdir/ {
alias /somewhere/else/subdir/;
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php7.3-fpm.sock;
}
...porad mam stejnou chybu 404, pokud chci zobrazit http://www.domena.tld/subdir/index.php
Ja to fakt nechapu!
-
Je potřeba začít od začátku. Tedy tím, jak Nginx zpracovává požadavky a jak prochází konfiguraci. Proto tomu na školení web serveru Nginx (https://www.root.cz/skoleni/webovy-server-nginx/) věnujeme poměrně dost času. Zaprvé nezáleží na pořadí v konfiguračním souboru, výjimkou je pořadí regulárních výrazů, tam první bere.
Máte tam regexp, který pokrývá soubory s příponou .php a ten vždycky vyhrává. Proto se Nginx nedostane k té location s aliasem a selže to. Existuje pěkný webový nástroj na testování priority v Nginx (https://nginx.viraptor.info/). V něm se dá vyzkoušet, která location se aplikuje na danou URL.