सवाल Nginx - रूट बनाम उपनाम, एकल फाइलों की सेवा के लिए?


कई घंटों के बाद nginx जैसे एकल फाइलों की सेवा करने के लिए robots.txt (संकेत: अपने ब्राउज़र कैश साफ़ करें प्रत्येक बार), मैं दो अलग-अलग तरीकों से घायल हूं, एक का उपयोग कर उपनाम निर्देश, और एक का उपयोग कर जड़ निर्देश, जैसे:

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

क्या वहाँ कोई कार्यात्मक दोनों के बीच अंतर? या सुरक्षा मुद्दे? अन्य निर्देशों के साथ कोई संघर्ष? (दोनों एक और स्थिर स्थान के साथ ठीक लग रहा था)। या किसी दूसरे को चुनने का कोई कारण?

नोट - मैंने दोनों का उपयोग नहीं किया था एक ही समय में :) इसके बजाय मैंने एक बार में एक की कोशिश की, और दोनों काम किया। मैं नहीं पूछ रहा हूं कि वे दोनों एक ही फाइल में एक साथ कैसे बातचीत करते हैं, लेकिन कौन सा उपयोग करना बेहतर होगा।


51
2018-06-08 16:04


मूल




जवाब:


खैर, ये दो निर्देश थोड़ा अलग हैं क्योंकि आप बाद के मामले में सटीक मिलान का उपयोग नहीं करते हैं। इसलिए, /robots.txt1111 आपके दूसरे स्थान से भी मिलेंगे।
location =/robots.txt { root /home/www/static/; } आपके पहले निर्देश का सटीक कार्यात्मक समतुल्य है।


62
2018-06-08 16:30



अच्छा बिंदु, धन्यवाद। लेकिन आप एक का उपयोग कर सकते हैं = दोनों मामलों में, सही? या यह केवल लागू होता है root? इसके अलावा, मेरा संपादन देखें - मेरा मतलब यह नहीं था कि दोनों एक बार में उपयोग करें। :) - Cyclops
@ साइक्लोप्स हां, आप इसका उपयोग कर सकते हैं = दोनों मामलों में। - Alexander Azarov
तो वे वही होंगे - क्या दूसरे पर एक निर्देश लेने का कोई कारण है? मेरा मुख्य सवाल है। - Cyclops
@ चक्रवात मूल रूप से, ऐसा कोई कारण नहीं है। - Alex


हां, एक अंतर है: "उपनाम" के साथ आप कर सकते हैं .. जैसे किसी अन्य फ़ाइल नाम के लिए उपनाम

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

जहाँ तक

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

आपको सर्वर पर अपनी फ़ाइल को robots.txt पर नाम देने के लिए मजबूर करता है। मैं पहले विकल्प का उपयोग करता हूं क्योंकि मैं अपने सर्वर पर मेरी रोबोट फ़ाइलों को tld.domain.subdomain-robots.txt के रूप में नाम देना पसंद करता हूं; उदाहरण के लिए:

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

32
2017-09-04 16:47





एक अंतर है, जब उपनाम पूरी निर्देशिका के लिए है।

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

काम करेंगे, जबकि

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

नहीं करेगा यह होना होगा

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

(भ्रमित करने में आसान)


0
2018-05-21 22:13