एकल अपस्ट्रीम सर्वर को पुन: प्रयास करने के लिए nginx को कॉन्फ़िगर करना


14

मैं निगनेक्स को एक रिवर्स प्रॉक्सी के रूप में उपयोग कर रहा हूं और मैं चाहूंगा कि यह कुछ सेकंड की प्रतीक्षा करे और अपस्ट्रीम सर्वर प्रतिक्रिया नहीं दे रहा है तो एक अनुरोध पुनः प्राप्त करें। इस तरह मैं अपने अपस्ट्रीम सर्वर को पुनः आरंभ कर सकता हूं और उपयोगकर्ताओं के बजाय 502 खराब गेटवे देख रहा हूं, उनके ब्राउजर कुछ सेकंड के लिए हैंग हो जाते हैं (रिस्टार्ट प्रोसेस में 3 या 4 सेकंड लगते हैं)। मैंने कुछ चीज़ें आज़माई हैं, मैंने इसे अपने सर्वर ब्लॉक में रखा है:

proxy_connect_timeout 60;
proxy_send_timeout 15;
proxy_read_timeout 20;

लेकिन यह कुछ भी करने के लिए प्रतीत नहीं हुआ। मैंने इसे अपस्ट्रीम ब्लॉक में जोड़ने की कोशिश की:

server 127.0.0.1:3001 fail_timeout=10s;

फिर से, वह नहीं जो मैं चाहता था।

क्या यह संभव है? मैं क्या खो रहा हूँ?

जवाबों:


1

आपने जिन निर्देशों की कोशिश की है, वे विभिन्न चीजों के लिए हैं जो आप चाहते हैं। उनके प्रलेखन पढ़ें।

upstreamनिर्देश प्रलेखन अच्छी तरह से बताते हैं कि कैसे एक नदी के ऊपर ब्लॉक काम करता है:

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

वहां सब कुछ कहा।

हालाँकि आप बैकएंड से दिए गए त्रुटि कोड को इसके साथ इंटरसेप्ट करके संसाधित कर सकते हैं proxy_intercept_errorsऔर फिर $request_uriमूल क्लाइंट की ओर से इससे निपटने वाली विशेष स्क्रिप्ट को भेज सकते हैं ।

आधार रेखा है: आपको क्लाइंट-साइड (या फ्रंटेंड-साइड) को पुनः प्राप्त करने के लिए कुछ कोड / एप्लिकेशन लॉजिक की आवश्यकता है।


0

जैसा कि एक अन्य उत्तर में कहा गया है, नेगनेक्स ऐसा करने का कोई अंतर्निहित तरीका नहीं है। एक संभावित समाधान आपके वर्तमान सर्वर से लोड-बैलेंसिंग सेटअप और एक बैकअप सर्वर का उपयोग करना है, जो सभी अनुरोधों के लिए निम्न कार्य करता है:

  • ऑनलाइन वापस आने तक अपने वर्तमान सर्वर को प्रदूषित करें
  • फिर 302 या अन्य पुनर्निर्देशन के साथ प्रतिक्रिया करें ताकि ब्राउज़र फिर से कोशिश करे

इस सर्वर को 'बैकअप' ध्वज के साथ चिह्नित किया जाएगा ताकि यह केवल तब ही आजमाया जाए जब अन्य सभी सर्वर ऑफ़लाइन हों ( HTTP भार संतुलन> सर्वर भार )।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.