2012-11-14 22 views
17

वेब अनुप्रयोग ढांचे जैसे सिनात्रा (रूबी), प्ले (स्कैला), लिफ्ट (स्कैला) एक विशिष्ट पोर्ट को सुनकर एक वेब सर्वर उत्पन्न करता है।किसी फ्रेमवर्क वेब सर्वर के सामने एक HTTP सर्वर का उपयोग क्यों करना चाहिए?

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

क्या आपके पास अपने अनुभव से इसका कोई कारण है?

+0

आप किस प्रकार के विवरण चाहते हैं? –

+0

धन्यवाद @ डेव न्यूटन। मैंने सवाल बदल दिया है। मुझे बस ऐसे किसी व्यक्ति से कारण चाहिए जो पहले से ही कर चुका है। – juanpavergara

+0

यह भी देखें http://stackoverflow.com/q/2939393/152948 – hobbs

उत्तर

41
  • किसी भी वेब एप्लिकेशन का हिस्सा पूरी तरह से मानकीकृत और कमोडिटीकृत कार्यक्षमता है। Nginx या apache जैसे परिपक्व वेब सर्वर निम्न चीज़ें कर सकते हैं। वे निम्न चीजों को इस तरह से कर सकते हैं कि अधिक सटीक, अधिक कुशल, अधिक स्थिर, अधिक सुरक्षित, sysadmins से अधिक परिचित, और आपके एप्लिकेशन सर्वर में जो कुछ भी लिखा जा सकता है उससे कॉन्फ़िगर करना अधिक आसान हो।
    • जैसे HTML, छवियों, सीएसएस, जावास्क्रिप्ट, फोंट, आदि के रूप में स्थिर फ़ाइलों की सेवा
    • आभासी होस्टिंग (एक ही आईपी पते पर एक से अधिक डोमेन)
    • यूआरएल को फिर से लिखने
    • होस्ट नाम नए सिरे से लिखना/पुनः निर्देशित
    • संभाल टीएलएस समाप्ति (धन्यवाद @ emt14)
    • संपीड़न (धन्यवाद @JacobusR)
  • एक अलग वेब सर्वर क्षमता रों को प्रदान करता है erve एक "रखरखाव के लिए बंद" पृष्ठ हुए अपने आवेदन सर्वर के पुनरारंभ या (नीचे
  • रिवर्स प्रॉक्सी आप अनुप्रयोग फ्रेमवर्क
  • वेब सर्वर बनाया में है और परीक्षण तंत्र विशेषाधिकार प्राप्त बंदरगाहों के लिए बाध्य करने के लिए के लिए लोड संतुलन और दोष सहिष्णुता प्रदान कर सकते हैं दुर्घटनाओं 1024) रूट के रूप में और फिर गैर-विशेषाधिकार प्राप्त उपयोगकर्ता के रूप में निष्पादित करना। अधिकांश वेब एप्लिकेशन ढांचे डिफ़ॉल्ट रूप से ऐसा नहीं करते हैं।
  • परिपक्व वेब सर्वर लड़ाई कठोर और स्थिर हैं। स्थिर रूप से, मेरा मतलब है कि वे सचमुच लगभग कभी दुर्घटनाग्रस्त नहीं होते हैं। आपका वेब एप्लिकेशन लगभग निश्चित रूप से बहुत कम स्थिर है। यह आपको उपयोगकर्ता को कम से कम एक त्रुटि त्रुटि पृष्ठ की सेवा करने की क्षमता देता है, यह कहकर कि आपका ब्राउज़र वेब ब्राउज़र के बजाय नीचे एक सामान्य "कनेक्ट नहीं कर सका" त्रुटि प्रदर्शित कर रहा है।

और बस मामले में आप Airbnb tech talk on January 30, 2013 पर इसहाक Schluetter से अर्द्ध सरकारी जवाब चाहिए 40 मिनट के आसपास वह इस सवाल को संबोधित करता है कि क्या नोड स्थिर है & सीधे इंटरनेट से कनेक्शन प्रदान करने के लिए पर्याप्त सुरक्षित है। उसका जवाब अनिवार्य रूप से "हां" है, यह ठीक है। तो आप इसे कर सकते हैं और आप शायद स्थिरता और सुरक्षा दृष्टिकोण से ठीक होंगे (मान लें कि आप ऐप सर्वर प्रक्रिया की अप्रत्याशित समाप्ति को संभालने के लिए क्लस्टर का उपयोग कर रहे हैं), लेकिन वर्तमान परिचालन की वास्तविकता से ऊपर वर्णित है कि अभी भी लगभग हर कोई नोड चलाता है एक अलग वेब सर्वर या रिवर्स प्रॉक्सी/कैश के पीछे।

+0

nginx जैसे सर्वर बहुत उच्च समवर्ती लोड को संभालने में भी सक्षम हैं, जो एक हैंडलर मॉडल का उपयोग करके किया जाता है जो प्रति थ्रेड के कई समवर्ती अनुरोधों की अनुमति देता है। यह स्थैतिक सामग्री की सेवा के लिए दूर-सुथरे थ्रुपुट के कारण का हिस्सा है। यह आपके ऐप सर्वर को सिर्फ अपने काम पर ध्यान केंद्रित करने देता है। वास्तव में –

+0

। मेरा मतलब है "अधिक कुशल", लेकिन आम तौर पर वे कई दृष्टिकोणों से आपके ऐप ढांचे की तुलना में बेहतर-उपयुक्त होने जा रहे हैं: समवर्ती, विलंबता, संसाधन उपयोग। कभी-कभी आपका वेब ढांचा इन मेट्रिक्स में से एक या अधिक के खिलाफ तुलनीय प्रदर्शन प्रदान कर सकता है, लेकिन जब बड़ी तस्वीर पर विचार किया जाता है, तो अभी भी एक समर्पित वेब सर्वर के पीछे अपना आवेदन ढांचा डालने का अच्छा कारण है। –

2

अक्सर फ्रेमवर्क आपको जो कुछ भी चाहिए, वह करते हैं, लेकिन कभी-कभी, इसके ऊपर एक परत जोड़ना आपको संपीड़न, सुरक्षा, सत्र प्रबंधन, भार संतुलन इत्यादि जैसी प्रतीत होता है। फिर भी, एक वेब सर्वर जोड़ना भी हो सकता है सुरक्षा मुद्दों को पेश करें, उदाहरण के लिए, संभावना है कि आपकी वेब सर्वर सुरक्षा को लिफ्ट से आसानी से समझौता किया जा सकता है।इसके अलावा, कुछ वेब ढांचे बेहद स्केलेबल हैं और यहां तक ​​कि बीमार चुने हुए वेब सर्वर से भी बाधा आ सकती है।

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

उदाहरण के लिए, आप बस एन्क्रिप्शन, या संपीड़न की जरूरत है, तो आप पा सकते हैं कि सही पुस्तकालय जोड़ने या प्लग में अपने ढांचे के लिए सिर्फ इतना है कि ऐसा कर सकते हैं (और केवल कि)

2

मैं जोड़ देगा:

  • एसएसएल हैंडलिंग
  • कुछ सर्वरों के लिए अपाचे जैसे मॉड्यूल (यानी। एनटीएमएल/केर्बेरो प्रमाणीकरण)
  • वेब सर्वर आपके आवेदन की तुलना में कुछ चीजों के लिए बेहतर है, जैसे स्थिर सेवा।
0

प्रॉक्सी http सर्वर के साथ, ढांचे को गणना की गई सामग्री देने के लिए http कनेक्शन खोलने की आवश्यकता नहीं है और फिर कुछ अन्य अनुरोध की सेवा शुरू कर सकते हैं। यह एक बफर के रूप में कार्य करता है।

0

यह पहिया को पुनर्निर्मित करने का मुद्दा है। अधिकांश ढांचे आपको विकास वातावरण प्रदान करेंगे लेकिन उत्पादन के लिए आमतौर पर एक वाणिज्यिक/ओपन सोर्स प्रोजेक्ट का उपयोग करने के लिए अच्छा अभ्यास होता है जो उत्पादन के दौरान उत्पन्न होने वाले सभी मुद्दों से निपटने में सक्षम होता है।

लोग फ्रेमवर्क बनाने वाले लोगों के पास ध्यान केंद्रित करने के लिए ढांचा होगा, जबकि सर्वर बनाने वाले लोग केवल वही (परिपूर्ण) कर रहे हैं।