क्या चल रहा है?
आप डेबियन या उबंटू का उपयोग कर रहे होंगे, क्योंकि बुराई sites-available / sites-enabledतर्क nginx के अपस्ट्रीम पैकेजिंग http://nginx.org/packages/ से उपयोग नहीं किया गया है ।
या तो मामले में, दोनों को मानक includeनिर्देश की मदद से कॉन्फ़िगरेशन कन्वेंशन के रूप में लागू किया जाता है /etc/nginx/nginx.conf।
यहाँ /etc/nginx/nginx.confnginx.org से nginx के आधिकारिक अपस्ट्रीम पैकेज से एक स्निपेट दिया गया है:
http {
…
include /etc/nginx/conf.d/*.conf;
}
यहाँ /etc/nginx/nginx.confडेबियन / उबंटू से एक स्निपेट दिया गया है :
http {
…
include /etc/nginx/conf.d/*.conf;
include /etc/nginx/sites-enabled/*;
}
तो, एनजीआईएनएक्स के दृष्टिकोण से, केवल अंतर यह होगा कि फाइलों को conf.dजल्दी से संसाधित किया जा सकता है, और, जैसे कि, यदि आपके पास कॉन्फ़िगरेशन हैं जो चुपचाप एक-दूसरे के साथ संघर्ष करते हैं, तो उन conf.dलोगों में से उन पर पूर्ववर्ती हो सकता है sites-enabled।
बेस्ट प्रैक्टिस है conf.d।
आपको /etc/nginx/conf.dएक मानक सम्मेलन के रूप में उपयोग करना चाहिए , और कहीं भी काम करना चाहिए।
यदि आपको किसी साइट को निष्क्रिय करने की आवश्यकता है, तो बस नाम बदलने के लिए अब .confप्रत्यय नहीं है, बहुत आसान, सरल और त्रुटि-प्रूफ:
sudo mv -i /etc/nginx/conf.d/default.conf{,.off}
या किसी साइट को सक्षम करने के लिए विपरीत :
sudo mv -i /etc/nginx/conf.d/example.com.conf{.disabled,}
बचें sites-availableऔर sites-enabledहर कीमत पर।
मैं पूरी तरह से उपयोग करने का कोई कारण नहीं देखता sites-available/ sites-enabled:
कुछ लोगों ने उल्लेख किया है nginx_ensiteऔर nginx_dissiteलिपियों - इन लिपियों के नाम इस पराजय के बाकी हिस्सों की तुलना में भी बदतर हैं - लेकिन ये स्क्रिप्ट भी कहीं नहीं पाए जाते हैं - वे nginxडेबियन में पैकेज से अनुपस्थित हैं (और शायद उबंटू में भी) , और अपने स्वयं के पैकेज में मौजूद नहीं है, या तो, साथ ही, क्या आपको वास्तव में दो निर्देशिकाओं के बीच फ़ाइलों को स्थानांतरित करने और / या लिंक करने के लिए एक पूरे गैर-मानक तृतीय-पक्ष स्क्रिप्ट की आवश्यकता है?
और यदि आप लिपियों का उपयोग नहीं कर रहे हैं (जो वास्तव में, ऊपर के अनुसार एक स्मार्ट विकल्प है), तो इस बात का मुद्दा आता है कि आप साइटों का प्रबंधन कैसे करते हैं:
- आप से सांकेतिक लिंक बना सकता हूँ
sites-availableकरने के लिए sites-enabled?
- फ़ाइलों की प्रतिलिपि बनाएँ?
- फ़ाइलों को स्थानांतरित करें?
- फ़ाइलों को जगह में संपादित करें
sites-enabled?
उपरोक्त कुछ मामूली मुद्दों से निपटने के लिए लग सकता है, जब तक कि कई लोग सिस्टम का प्रबंधन शुरू नहीं करते हैं, या जब तक आप एक त्वरित निर्णय नहीं लेते हैं, केवल लाइन के नीचे महीनों या वर्षों के बारे में भूलने के लिए…
जो हमें लाता है:
क्या किसी फ़ाइल को निकालना सुरक्षित है sites-enabled? क्या यह सॉफ्ट लिंक है? एक कड़ी? या विन्यास की एकमात्र प्रति? विन्यास नरक का एक प्रमुख उदाहरण।
किन साइटों को अक्षम किया गया है? (के साथ conf.d, बस फ़ाइलों के लिए एक उलटा खोज करते हैं .conf- के साथ समाप्त नहीं find /etc/nginx/conf.d -not -name "*.conf", या उपयोग करें grep -v।)
न केवल उपरोक्त सभी, बल्कि includeडेबियन / उबंटू द्वारा उपयोग किए जाने वाले विशिष्ट निर्देश पर भी ध्यान दें - /etc/nginx/sites-enabled/*- इसके लिए कोई फ़ाइल नाम प्रत्यय निर्दिष्ट sites-enabledनहीं किया गया है conf.d।
- क्या इसका मतलब यह है कि अगर एक दिन आप जल्दी से एक फ़ाइल या दो के भीतर संपादित करना तय है
/etc/nginx/sites-enabledआपकी, और emacsएक बैकअप फ़ाइल बनाता है की तरह default~है, तो, अचानक, तुम दोनों है defaultऔर default~के रूप में सक्रिय विन्यास, जो इस्तेमाल किया निर्देशों निर्भर करता है, यहां तक कि देना नहीं कर सकते हैं शामिल आप किसी भी चेतावनी, और जगह लेने के लिए एक लंबे समय तक डिबगिंग सत्र का कारण। (हां, मेरे साथ ऐसा हुआ; यह एक हैकथॉन के दौरान था, और मैं पूरी तरह से हैरान था कि मेरा आत्मविश्वास क्यों काम कर रहा था।)
इस प्रकार, मुझे विश्वास है कि sites-enabledशुद्ध बुराई है!
www-dataएक अलग विषय है। अधिकांश ऑपरेटिंग सिस्टम कम अनुमतियों के साथ एक अलग उपयोगकर्ता को परिभाषित करते हैं जो प्रक्रिया को 80 के रूप में रूट करने के लिए बाइंड करने के बाद चला सकते हैं। यह विन्यास फाइल में परिभाषित है। वहां से बुनियादी सुरक्षा प्रथाओं को लागू करें; उपयोगकर्ता को कुछ भी लिखने की अनुमति न दें वेबसर्वर को लिखने की आवश्यकता नहीं होनी चाहिए, अन्य उपयोगकर्ताओं को फ़ाइलों को लिखने की अनुमति न दें जब तक कि यह जानबूझकर न हो।