Fórum Root.cz

Hlavní témata => Server => Téma založeno: Rhinox 10. 01. 2022, 20:20:58

Název: Nefunguje alias pro web server Nginx
Přispěvatel: Rhinox 10. 01. 2022, 20:20:58
Potrebuju pro Nginx udelat to, co pro Apache dela prikaz
Kód: [Vybrat]
Alias /subdir /somewhere/else/subdir
Udelal sem to takhle:
Kód: [Vybrat]
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?
Název: Re:Nefunguje alias pro web server Nginx
Přispěvatel: Petr Krčmář 10. 01. 2022, 20:53:26
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á.
Název: Re:Nefunguje alias pro web server Nginx
Přispěvatel: Rhinox 11. 01. 2022, 00:07:31
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:

Kód: [Vybrat]
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!
Název: Re:Nefunguje alias pro web server Nginx
Přispěvatel: Petr Krčmář 11. 01. 2022, 08:43:26
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.