मैं JSON डेटा लौटाने वाले कुछ वेबसर्विस लिख रहा हूं, जिनमें बहुत सारे उपयोगकर्ता हैं।
सिर्फ http सर्वर का उपयोग करने की तुलना में मेरे सर्वर के सामने Nginx का उपयोग करने के क्या लाभ हैं?
मैं JSON डेटा लौटाने वाले कुछ वेबसर्विस लिख रहा हूं, जिनमें बहुत सारे उपयोगकर्ता हैं।
सिर्फ http सर्वर का उपयोग करने की तुलना में मेरे सर्वर के सामने Nginx का उपयोग करने के क्या लाभ हैं?
जवाबों:
निर्भर करता है।
बॉक्स के बाहर, एक विपरीत प्रॉक्सी के रूप में nginx को सामने रखना आपको देने जा रहा है:
गो HTTP सर्वर बहुत अच्छा है, लेकिन आपको इनमें से कुछ चीजें करने के लिए पहिया को फिर से मजबूत करना होगा (जो कि ठीक है: इसका मतलब हर किसी के लिए सब कुछ होना नहीं है)।
मैंने हमेशा nginx को सामने रखना आसान पाया है - जो कि यह अच्छा है - और इसे "वेब सर्वर" सामान करने दें। माई गो एप्लीकेशन एप्लीकेशन स्टफ करता है, और केवल नंगे न्यूनतम हेडर / आदि। यह करने की जरूरत है। एक "बुरी" चीज़ के रूप में नंगेक्स को सामने रखकर मत देखो।
log
पैकेज का उपयोग करके )। यदि आप IP एड्रेस, रिसोर्स एक्सेस आदि को लॉग इन करना चाहते हैं, तो आपको वह लिखना होगा। एक ही हेडर सेट करने के लिए जाता है, मूल से परे। हालाँकि मेरे पास कोई ठोस डेटा नहीं है, Go के सामने nginx को वास्तव में Go की तुलना में कोई धीमा नहीं होना चाहिए: वास्तव में यह gzip और इसके स्वयं के अनुकूलन के लिए तेजी से धन्यवाद हो सकता है। "लागत" अधिक मेमोरी / सीपीयू उपयोग होगा, लेकिन उस मोर्चे पर भी नग्नेक्स बहुत कुशल है।
गो का मानक http सर्वर ठीक है। यदि आपका आवेदन ज्यादातर / केवल "गतिशील" अनुरोध / प्रतिक्रियाएं हैं, तो यह वास्तव में सबसे अच्छा तरीका है।
आप स्थैतिक संपत्ति की सेवा करने के लिए nginx का उपयोग कर सकते हैं, लेकिन सबसे अधिक संभावना है कि मानक गो उस के लिए भी ठीक है। यदि आपको उच्च प्रदर्शन की आवश्यकता है, तो आपको बस वार्निश या उदाहरण के लिए सीडीएन या कैश का उपयोग करना चाहिए।
यदि आपको एक ही आईपी पते से अलग-अलग अनुप्रयोगों की सेवा करने की आवश्यकता है, तो अलग-अलग अनुप्रयोगों के बीच अनुरोधों को वितरित करने के लिए nginx एक प्रॉक्सी के लिए एक अच्छा विकल्प है; हालाँकि मैं अधिक बार वार्निश या HAProxy को उस तरह की चीज़ के लिए टूलबॉक्स से बाहर निकाल देता हूँ।
गोरिल्ला वेब टूलकिट आप देता है:
schema
पैकेज संरचना के लिए मूल्यों को रूपांतरित करता है।यह net/http
एनजीआईएनएक्स जैसे गो और एचटीटीपी सर्वर के बीच बहुत अंतर भरता है ।
व्यक्तिगत रूप से, net/http
अगर मैं जानता हूं कि मैं एक सीडीएन में प्लग इन कर सकता हूं तो शीर्ष पर दूसरे HTTP सर्वर को स्थापित करने और कॉन्फ़िगर करने से बचूंगा।
मुझे लगता net/http
है कि किसी भी मानक पुस्तकालय में सबसे शक्तिशाली HTTP सर्वर है।
से https://blog.gopheracademy.com/caddy-a-look-inside/ यह लग रहा है जाओ की तरह gzip संभाल कर सकते हैं, त्रुटियों, स्टैटिक फ़ाइलें, मार्ग और http हेडर मिडिलवेयर का उपयोग कर। नीचे दी गई लाइन, ब्लॉग से दिखाती है कि आप इस तरह के अनुरोध को कैसे संभालेंगे।
logHandler(gzipHandler(fileServer))
वे वास्तव में दिलचस्प तरीके से त्रुटि लॉगिंग को संभालते हैं। जब तक आपका मिडलवेयर एक एरर कोड (int) देता है, तब तक एरर-हैंडलिंग मिडलवेयर स्वचालित रूप से इसे हैंडल करता है। वे भी पूरी तरह से गोइंग में पूरी साइट को कॉन्फ़िगर करने के लिए चले गए हैं जैसे कि नग्नेक्स। "सभी गोफर अकादमी वेबसाइटों के लिए nginx.conf फ़ाइल 115 लाइनों से अधिक लंबी थी। समकक्ष Caddyfile केवल 50 लाइनें है।"