Nefunguje alias pro web server Nginx

Nefunguje alias pro web server Nginx
« kdy: 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?
« Poslední změna: 10. 01. 2022, 20:52:32 od Petr Krčmář »


Re:Nefunguje alias pro web server Nginx
« Odpověď #1 kdy: 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á.

Re:Nefunguje alias pro web server Nginx
« Odpověď #2 kdy: 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!

Re:Nefunguje alias pro web server Nginx
« Odpověď #3 kdy: 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 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. V něm se dá vyzkoušet, která location se aplikuje na danou URL.