Vraag Nginx - root versus alias, voor het weergeven van enkele bestanden?


Na vele uren krijgen nginx om afzonderlijke bestanden te dienen zoals robots.txt (Hint: wis de cache van je browser elke keer), eindigde ik met twee verschillende manieren, één met behulp van de alias richtlijn en een die de wortel richtlijn, zoals zo:

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

Is er een? functioneel verschil tussen de twee? Of beveiligingsproblemen? Eventuele conflicten met andere richtlijnen? (Beide leken goed met een andere / statische locatie). Of een reden om de ene boven de andere te kiezen?

Opmerking - Ik heb beide niet gebruikt tegelijkertijd :) In plaats daarvan probeerde ik elk, een voor een, en beide werkten. Ik vraag niet hoe ze allebei in hetzelfde bestand samenwerken, maar welke beter te gebruiken zijn.


51
2018-06-08 16:04


oorsprong




antwoorden:


Welnu, deze twee richtlijnen zijn enigszins functioneel anders omdat je in het laatste geval geen exacte overeenkomst gebruikt. Zo, /robots.txt1111 komt ook overeen met je tweede locatie.
location =/robots.txt { root /home/www/static/; } is een exact functioneel equivalent van uw eerste richtlijn.


62
2018-06-08 16:30



Goed punt, bedankt. Maar u kunt een gebruiken = in beide gevallen correct? Of is het alleen van toepassing op root? Zie ook mijn bewerking - ik wilde het niet allebei tegelijk gebruiken. :) - Cyclops
@Cyclops Ja, je mag gebruiken = in beide gevallen. - Alexander Azarov
Dus ze zouden hetzelfde zijn - is er een reden om de ene richtlijn boven de andere te kiezen? Is mijn belangrijkste vraag. - Cyclops
@Cyclops Eigenlijk is er geen reden. - Alex


Ja, er is een verschil: met "alias" kun je .. wel alias van een andere bestandsnaam, zoals

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

terwijl

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

dwingt je om je bestand op de server ook robots.txt te noemen. Ik gebruik de eerste optie, omdat ik graag mijn robots-bestanden op mijn server benoemen als tld.domain.subdomain-robots.txt; bv

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

32
2017-09-04 16:47





Er is een verschil, wanneer het alias voor een hele map is.

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

zal werken, terwijl

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

zal niet doen. Dit zou moeten zijn

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

(Gemakkelijk te verwarren)


0
2018-05-21 22:13