मैं अपाचे से व्यावहारिक रूप से बेहतर क्यों पाती हूं


नेटक्राफ्ट द्वारा नवीनतम वेब सर्वर सर्वेक्षण के अनुसार, जो 2017 के अंत में किया गया था, (नवंबर में ठीक), अपाचे और नग्नेक्स इंटरनेट पर सबसे व्यापक रूप से उपयोग किए जाने वाले ओपन सोर्स वेब सर्वर हैं।

अपाचे यूनिक्स जैसे ऑपरेटिंग सिस्टम और विंडोज के लिए एक स्वतंत्र, ओपन-सोर्स HTTP सर्वर है। यह एक सुरक्षित, कुशल और एक्स्टेंसिबल सर्वर के रूप में डिज़ाइन किया गया था जो मौजूदा HTTP मानकों के साथ सिंक में HTTP सेवाएं प्रदान करता है।

जब से यह लॉन्च हुआ है, तब से 1996 तक अपाचे इंटरनेट पर सबसे लोकप्रिय वेब सर्वर रहा है। यह लिनक्स और ओपन सोर्स इकोसिस्टम में वेब सर्वर के लिए वास्तविक तथ्य है। नए लिनक्स उपयोगकर्ता आमतौर पर सेट अप और उपयोग करना आसान पाते हैं।

Nginx (उच्चारण strong इंजन-एक्स ') एक मुक्त, खुला-स्रोत, उच्च-प्रदर्शन HTTP सर्वर, रिवर्स प्रॉक्सी और IMAP/POP3 प्रॉक्सी सर्वर है। अपाचे की तरह ही यह भी यूनिक्स जैसे ऑपरेटिंग सिस्टम और विंडोज पर चलता है।

यह उच्च प्रदर्शन, स्थिरता, सरल विन्यास और कम संसाधन की खपत के लिए जाना जाता है, यह वर्षों से इतना लोकप्रिय हो गया है और इंटरनेट पर इसका उपयोग अधिक ऊंचाइयों पर जा रहा है। यह अब अनुभवी सिस्टम प्रशासकों या शीर्ष साइटों के वेब स्वामी के बीच पसंद का वेब सर्वर है।

कुछ व्यस्त साइटें द्वारा संचालित:

  • Apache are: PayPal, BBC.com, BBC.co.uk, SSLLABS.com, Apple.com plus lots more.
  • Nginx are: Netflix, Udemy.com, Hulu, Pinterest, CloudFlare, WordPress.com, GitHub, SoundCloud and many others.

वेब पर अपाचे और नग्नेक्स (मैं वास्तव में मतलब है < अपाचे बनाम नग्नेक्स 'लेख) के बीच तुलना में कई संसाधन पहले से ही प्रकाशित हैं, कई जिनमें से स्पष्ट रूप से विस्तार से, उनके शीर्ष सुविधाओं और विभिन्न परिदृश्यों के तहत संचालन, जिसमें प्रयोगशाला मानदंड में प्रदर्शन के उपाय भी शामिल हैं। इसलिए यहां संबोधित नहीं किया जाएगा।

मैं पूरी बहस के बारे में अपने अनुभव और विचार साझा करूँगा, कोशिश की जा रही है अपाचे और Nginx , दोनों उत्पादन वातावरण में आधुनिक वेब अनुप्रयोगों की मेजबानी के लिए आवश्यकताओं के आधार पर, अगले में अनुभाग।

कारण मैं अपाचे की तुलना में व्यावहारिक रूप से बेहतर क्यों पाती हूं

निम्नलिखित कारण हैं कि मैं आधुनिक वेब सामग्री वितरण के लिए Apache पर Nginx वेब सर्वर को प्राथमिकता देता हूं:

Nginx हल्के वजन वाले वेब सर्वरों में से एक है। यह अपाचे की तुलना में एक प्रणाली पर छोटे पैरों के निशान हैं जो एक एप्लिकेशन को चलाने के लिए आवश्यक कार्यक्षमता के विशाल दायरे को लागू करता है।

क्योंकि Nginx कई प्रमुख विशेषताओं को एक साथ रखता है, यह अपाचे बैकएंड, FastCGI, Memcached, SCGI, और uWSGI सर्वर या एप्लिकेशन सर्वर जैसे समर्पित तीसरे stream पार्टी अपस्ट्रीम वेब सर्वर पर निर्भर करता है, अर्थात Node.js, Tomcat जैसे भाषा विशिष्ट सर्वर , आदि।

इसलिए इसका मेमोरी उपयोग अपाचे की तुलना में सीमित संसाधन तैनाती के लिए बेहतर अनुकूल है।

जैसा कि अपाचे के थ्रेडेड या प्रोसेस-ओरिएंटेड आर्किटेक्चर (प्रोसेस ‑ प्रति कनेक्शन या थ्रेड ‑ प्रति) कनेक्शन मॉडल) के विपरीत, Nginx एक स्केलेबल, इवेंट-चालित (एसिंक्रोनस) आर्किटेक्चर का उपयोग करता है। यह एक उत्तरदायी प्रक्रिया मॉडल को रोजगार देता है जो उपलब्ध हार्डवेयर संसाधनों के अनुरूप होता है।

इसकी एक मास्टर प्रक्रिया होती है (जो विशेषाधिकार को संचालित करती है जैसे कि कॉन्फ़िगरेशन पढ़ना और पोर्ट पर बाइंड करना) और जो कई वर्कर और हेल्पर प्रक्रियाएँ बनाती है।

कार्यकर्ता प्रक्रियाएं एक साथ हजारों HTTP कनेक्शनों को संभाल सकती हैं, डिस्क पर सामग्री को पढ़ और लिख सकती हैं, और अपस्ट्रीम सर्वर के साथ संवाद कर सकती हैं। सहायक प्रक्रियाएं (कैश मैनेजर और कैश लोडर) c डिस्क सामग्री कैशिंग संचालन पर प्रबंधन कर सकती हैं।

यह अपने संचालन को मापनीय बनाता है, और इसके परिणामस्वरूप उच्च प्रदर्शन होता है। यह डिज़ाइन दृष्टिकोण आगे इसे तेज बनाता है, आधुनिक अनुप्रयोगों के लिए अनुकूल है। इसके अलावा, तीसरे। पार्टी मॉड्यूल का उपयोग नगीनक्स में देशी कार्यात्मकताओं को विस्तारित करने के लिए किया जा सकता है।

Nginx में एक सरल कॉन्फ़िगरेशन फ़ाइल संरचना है, जिससे इसे कॉन्फ़िगर करना आसान हो जाता है। इसमें ऐसे मॉड्यूल होते हैं जो कॉन्फ़िगरेशन फ़ाइल में निर्दिष्ट निर्देशों द्वारा नियंत्रित होते हैं। इसके अलावा, निर्देशों को ब्लॉक निर्देशों और सरल निर्देशों में विभाजित किया जाता है।

एक ब्लॉक निर्देश को ब्रेसिज़ (<कोड> { और <कोड>} ) द्वारा परिभाषित किया गया है। यदि एक ब्लॉक निर्देश में ब्रेसिज़ के अंदर अन्य निर्देश हो सकते हैं, तो इसे एक संदर्भ कहा जाता है, जैसे कि ईवेंट, http, सर्वर और स्थान।

http {
	server {
		
	}
}

एक साधारण निर्देश में रिक्त स्थान द्वारा नाम और मापदंडों को अलग किया जाता है और एक अर्धविराम <कोड> (;) के साथ समाप्त होता है।

http {
	server {
		location / {
				
				## this is simple directive called root
			   	root  /var/www/hmtl/example.com/;

		}
		
	}
}

उदाहरण के लिए, शामिल निर्देश का उपयोग करके आप कस्टम कॉन्फ़िगरेशन फ़ाइलों को शामिल कर सकते हैं।

http {
	server {

	}
	## examples of including additional config files
	include  /path/to/config/file/*.conf;
	include  /path/to/config/file/ssl.conf;
}

मेरे लिए एक व्यावहारिक उदाहरण था कि मैं कैसे विभिन्न PHP संस्करणों के साथ कई वेबसाइटों को चलाने के लिए आसानी से Nginx को कॉन्फ़िगर करने में कामयाब रहा, जो अपाचे के साथ थोड़ी चुनौती थी।

Nginx के सामान्य उपयोगों में से एक इसे एक प्रॉक्सी सर्वर के रूप में स्थापित कर रहा है, इस मामले में यह क्लाइंट से HTTP अनुरोध प्राप्त करता है और उन्हें अलग-अलग प्रोटोकॉल पर, ऊपर या नीचे बताए गए सर्वरों को पास करता है। आप क्लाइंट अनुरोध हेडर को भी संशोधित कर सकते हैं जो कि प्रॉक्सी सर्वर पर भेजे जाते हैं, और प्रॉक्सी सर्वर से आने वाली प्रतिक्रियाओं के बफरिंग को कॉन्फ़िगर करते हैं।

फिर यह समीपवर्ती सर्वरों से प्रतिक्रियाएं प्राप्त करता है और उन्हें ग्राहकों को भेजता है। अपाचे की तुलना में प्रॉक्सी सर्वर के रूप में कॉन्फ़िगर करना आसान है क्योंकि आवश्यक मॉड्यूल अधिकांश मामलों में डिफ़ॉल्ट रूप से सक्षम होते हैं।

स्टेटिक कंटेंट या फाइलें आम तौर पर सर्वर कंप्यूटर पर डिस्क पर संग्रहित फाइलें होती हैं, उदाहरण के लिए CSS फाइलें, JavaScripts फाइलें या चित्र। आइए एक परिदृश्य पर विचार करें जहां आप Nginj को Nodejs (एप्लिकेशन सर्वर) के लिए एक दृश्य के रूप में उपयोग कर रहे हैं।

यद्यपि Nodejs सर्वर (विशेष रूप से नोड फ्रेमवर्क) ने स्थिर फ़ाइल हैंडलिंग के लिए सुविधाओं में बनाया है, उन्हें गैर-गतिशील सामग्री वितरित करने के लिए कुछ गहन प्रसंस्करण करने की आवश्यकता नहीं है, इसलिए सीधे स्थैतिक सामग्री की सेवा के लिए वेब सर्वर को कॉन्फ़िगर करना व्यावहारिक रूप से फायदेमंद है ग्राहकों।

Nginx एक विशिष्ट निर्देशिका से स्थैतिक फ़ाइलों को संभालने का एक बहुत अच्छा काम कर सकता है, और अपस्ट्रीम सर्वर प्रक्रियाओं से स्थैतिक संपत्ति के अनुरोधों को रोक सकता है। यह बैकएंड सर्वर के समग्र प्रदर्शन में महत्वपूर्ण सुधार करता है।

आधुनिक वेब अनुप्रयोगों के लिए उच्च प्रदर्शन और अपटाइम का एहसास करने के लिए एक या वितरित HTTP सर्वर पर कई एप्लिकेशन इंस्टेंस चलाने के लिए कॉल कर सकते हैं। यह बदले में आपके HTTP सर्वर के बीच लोड वितरित करने के लिए लोड संतुलन स्थापित करने के लिए आवश्यक हो सकता है।

आज, लोड बैलेंसिंग ऑपरेटिंग सिस्टम संसाधन उपयोग को अनुकूलित करने, लचीलेपन को अधिकतम करने, विलंबता को कम करने, थ्रूपुट को बढ़ाने, अतिरेक को प्राप्त करने और दोष-सहिष्णु विन्यास की स्थापना के लिए एक व्यापक रूप से उपयोग किया जाने वाला दृष्टिकोण बन गया है - कई एप्लिकेशन इंस्टेंसेस में।

Nginx निम्नलिखित लोड संतुलन विधियों का उपयोग करता है:

  • round-robin (default method) – requests to the upstream servers are distributed in a round-robin fashion (in order of the list of servers in the upstream pool).
  • least-connected – here the next request is proxied to the server with the least number of active connections.
  • ip-hash – here a hash-function is used to determine what server should be selected for the next request (based on the client’s IP address).
  • Generic hash – under this method, the system administrator specifies a hash (or key) with the given text, variables of the request or runtime, or their combination. For example, the key may be a source IP and port, or URI. Nginx then distributes the load amongst the upstream servers by generating a hash for the current request and placing it against the upstream servers.
  • Least time (Nginx Plus) – assigns the next request to the upstream server with the least number of current connections but favors the servers with the lowest average response times.

इसके अलावा, Nginx अत्यधिक स्केलेबल और आधुनिक वेब एप्लिकेशन है, विशेष रूप से उच्च प्रदर्शन और स्केलेबिलिटी प्रदान करने वाली तकनीक के लिए एंटरप्राइज़ एप्लिकेशन की मांग है।

Nginx की अद्भुत स्केलेबिलिटी फीचर्स से लाभान्वित होने वाली एक कंपनी है CloudFlare , यह मैथ्यू के अनुसार, अपेक्षाकृत मामूली बुनियादी ढांचे के साथ 15 अरब से अधिक मासिक पृष्ठ दृश्यों को संभालने के लिए अपने वेब अनुप्रयोगों को स्केल करने में कामयाब रहा है। CloudFare के सह-संस्थापक और सीईओ।

अधिक व्यापक स्पष्टीकरण के लिए, नेग्नेक्स ब्लॉग पर इस लेख को देखें: एनजीआईएनएक्स बनाम अपाचे: एक दशक पुराने सवाल का हमारा दृष्टिकोण।

दोनों Apache और Nginx को एक-दूसरे द्वारा प्रतिस्थापित नहीं किया जा सकता है, उनके पास अपने मजबूत और कमजोर बिंदु हैं। हालांकि, आधुनिक वेबसाइटों और वेब अनुप्रयोगों को मज़बूती से और कुशलता से शक्ति प्रदान करने के लिए Nginx एक शक्तिशाली, लचीली, स्केलेबल और सुरक्षित तकनीक प्रदान करता है। तुम्हारा क्या लेना है? नीचे फीडबैक फॉर्म के माध्यम से जानते हैं।