क्या चल रहा है?
आप डेबियन या उबंटू का उपयोग कर रहे होंगे, क्योंकि बुराई sites-available
/ sites-enabled
तर्क nginx के अपस्ट्रीम पैकेजिंग http://nginx.org/packages/ से उपयोग नहीं किया गया है ।
या तो मामले में, दोनों को मानक include
निर्देश की मदद से कॉन्फ़िगरेशन कन्वेंशन के रूप में लागू किया जाता है /etc/nginx/nginx.conf
।
यहाँ /etc/nginx/nginx.conf
nginx.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 के रूप में रूट करने के लिए बाइंड करने के बाद चला सकते हैं। यह विन्यास फाइल में परिभाषित है। वहां से बुनियादी सुरक्षा प्रथाओं को लागू करें; उपयोगकर्ता को कुछ भी लिखने की अनुमति न दें वेबसर्वर को लिखने की आवश्यकता नहीं होनी चाहिए, अन्य उपयोगकर्ताओं को फ़ाइलों को लिखने की अनुमति न दें जब तक कि यह जानबूझकर न हो।