Frage Nginx - root versus alias, um einzelne Dateien zu liefern?


Nach vielen Stunden bekommen nginx um einzelne Dateien wie z robots.txt (Hinweis: Löschen Sie Ihren Browser-Cache jedes Mal), endete ich mit zwei verschiedenen Wegen, eine mit der alias Direktive und eine mit der Wurzel Richtlinie, so:

location /robots.txt { alias /home/www/static/robots.txt; }
location /robots.txt { root /home/www/static/;  }

Gibt es irgendwelche funktional Unterschied zwischen den beiden? Oder Sicherheitsfragen? Gibt es Konflikte mit anderen Richtlinien? (Bei einem anderen / statischen Standort waren beide in Ordnung). Oder irgendeinen Grund, einen über den anderen zu wählen?

Hinweis - Ich habe beide nicht benutzt zur selben Zeit :) Eher habe ich jeden einzeln probiert, und beide haben funktioniert. Ich frage nicht, wie sie beide in der gleichen Datei interagieren, aber welche wäre besser zu benutzen.


51
2018-06-08 16:04


Ursprung




Antworten:


Nun, diese beiden Direktiven unterscheiden sich geringfügig, weil Sie im letzteren Fall keine exakte Übereinstimmung verwenden. So, /robots.txt1111 passt auch zu deinem zweiten Standort.
location =/robots.txt { root /home/www/static/; } ist ein exaktes funktionales Äquivalent Ihrer ersten Richtlinie.


62
2018-06-08 16:30



Guter Punkt, danke. Aber du kannst einen benutzen = in beiden Fällen richtig? Oder gilt es nur für root? Siehe auch meine Bearbeitung - ich wollte nicht beide auf einmal verwenden. :) - Cyclops
@Cyclops ja, du darfst verwenden = in beiden Fällen. - Alexander Azarov
Sie wären also gleich - gibt es einen Grund, eine Richtlinie über die andere zu wählen? Ist meine Hauptfrage. - Cyclops
@Cyclops Grundsätzlich gibt es keinen solchen Grund. - Alex


Ja, es gibt einen Unterschied: Mit "Alias" kann man .. gut zu einem anderen Dateinamen alias

location /robots.txt { alias /home/www/static/any-filename.txt; }

wohingegen

location /robots.txt { root /home/www/static/; }

zwingt Sie, Ihre Datei auf dem Server auch robots.txt zu nennen. Ich verwende die erste Option, da ich meine Robots-Dateien auf meinem Server als tld.domainsubomain-robots.txt; z.B

location /robots.txt { alias /home/www/static/ch.notex.static-robots.txt; }

32
2017-09-04 16:47





Es gibt einen Unterschied, wenn der Alias ​​für ein ganzes Verzeichnis ist.

    location ^~ /data/ { alias /home/www/static/data/; }

wird funktionieren, während

    location ^~ /data/ { root /home/www/static/data/; }

geht nicht. Das müsste sein

    location ^~ /data/ { root /home/www/static/; }

(Leicht zu verwirren)


0
2018-05-21 22:13