2012-06-07 10 views
5

मैं यूनिकॉर्न के सामने Nginx का उपयोग कर रहा हूं। जब आवेदन उच्च भार के अधीन होता है और सभी यूनिकॉर्न कर्मचारी व्यस्त होते हैं तो nginx 502 प्रतिक्रिया वापस कर देगा कि गेटवे गलत कॉन्फ़िगर किया गया है। मैं इस व्यवहार के साथ ठीक हूं, लेकिन इस स्थिति में मैं nginx को 503 प्रतिक्रिया कोड वापस लौटना चाहता हूं (सर्वर व्यस्त है, बाद में पुनः प्रयास करें) जो कि एक और अधिक उचित प्रतिक्रिया है।स्थिति कोड को बदलें जो अपस्ट्रीम यूनिकॉर्न व्यस्त होने पर Nginx लौटाता है

मैं इस सवाल का जवाब देखा: Is it possible to change the HTTP status code returned when proxy_pass gateway is down in nginx?

जो वर्णन के पुनर्लेखन के लिए कैसे कुछ स्थिति कोड नदी के ऊपर प्रॉक्सी से लौटे:

location/{ 
    proxy_pass http://backend; 
    proxy_intercept_errors on; 
    error_page 502 503 504 =503 @proxyisdown; # always reply with 503 
} 

location @proxyisdown { 
    add_header Retry-After 500; 
    index my_pretty_error_page.html; 
} 

लेकिन इस के साथ 2 मुद्दे हैं:

  1. अपस्ट्रीम एप्लिकेशन कभी-कभी मान्य परिस्थितियों के लिए 502 प्रतिक्रिया कोड लौटाता है जिसे
  2. बनाए रखा जाना चाहिए
  3. मुझे विश्वास नहीं है कि अपस्ट्रीम प्रॉक्सी वास्तव में इस गलत स्थिति कोड को वापस कर रहा है, अधिक संभावना है कि nginx आइटम को (tcp?) बफर पर नहीं रख सकता है और फिर nginx भ्रामक स्थिति कोड देता है।

क्या कोई तरीका है कि मैं इस स्थिति में nginx द्वारा लौटाए गए स्टेटस कोड को नियंत्रित कर सकता हूं ताकि यह 502 के बजाय 503 हो?

+0

यदि आप प्रॉक्सी से त्रुटियों को अवरुद्ध नहीं करना चाहते हैं तो आप 'proxy_intercept_errors को क्यों सेट करते हैं? ' और आप क्यों सोचते हैं कि "nginx भ्रामक स्थिति कोड देता है"? – VBart

+1

कोड उदाहरण उदाहरण के लिए मेरे प्रश्न के अंदर संदर्भित प्रश्न से, मेरा कोड नहीं। मुझे लगता है कि nginx एक भ्रामक स्थिति कोड देता है क्योंकि 502 वापस लौटाया जाता है जब अपस्ट्रीम वेब सर्वर की कोई अतिरिक्त क्षमता नहीं होती है। सर्वर गलत कॉन्फ़िगर नहीं किया गया है, यह बस व्यस्त है, यह 503 होना चाहिए। – Macdiesel

+1

कैसे nginx यह जान सकता है कि सर्वर व्यस्त है अगर यह ठीक से प्रतिक्रिया नहीं देता है? – VBart

उत्तर

0

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

संबंधित मुद्दे