जब HAProxy 503 HTTP कोड भेजता है तो मैं कस्टम 503 त्रुटि दस्तावेज़ का उपयोग कैसे कर सकता हूं?


20

जब सर्वर (बैकएंड) HTTP 503 कोड भेजता है तो मैं अपने स्वयं के 503 दस्तावेज़ पृष्ठ का उपयोग करना चाहता हूं। क्या यह संभव है?

"मॉनीटर फेल" जैसी स्थितियों को देखा है, लेकिन यह नहीं जानते कि इसे कैसे जोड़ें।

जवाबों:


23

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

errorfile 503 /etc/haproxy/errors/503-mycustom.http

फ़ाइल की सामग्री तब कुछ इस तरह होगी:

HTTP/1.0 503 Service Unavailable
Cache-Control: no-cache
Connection: close
Content-Type: text/html

<html> 
  <head>
    <title>RARRR!!!!!</title>
  </head> 
  <body style="font-family:Arial,Helvetica,sans-serif;">
    <div style="margin: 0 auto; width: 960px;"> 
          <h2 >RAWR RAWR RAWR</h2>
    </div>
  </body> 
</html>

errorfileनिर्देश एक बैकेंड के लिए विशिष्ट रूप में अच्छी तरह हो सकता है।

यदि नोड्स ऑनलाइन हैं, तो "त्रुटिफाइल" सेटिंग का उपयोग HAProxy द्वारा भेजी गई प्रतिक्रिया को बदलने के लिए नहीं किया जा सकता है। यह सेटिंग केवल HAProxy को प्रभावित करती है जब सभी नोड ऑफ़लाइन होते हैं।

यह समझना महत्वपूर्ण है कि यह कीवर्ड सर्वर द्वारा लौटाई गई त्रुटियों को फिर से लिखने के लिए नहीं है, लेकिन HAProxy द्वारा पाई गई त्रुटियों का पता लगाया और वापस किया गया। यही कारण है कि समर्थित त्रुटियों की सूची एक छोटे से सेट तक सीमित है।


2
ध्यान दें कि .http फ़ाइल \r\nHTTP प्रोटोकॉल विनिर्देश के अनुपालन के लिए हेडर में लाइन ब्रेक के लिए उपयोग करना चाहिए । यदि विंडोज़ बॉक्स से अपलोड करना सुनिश्चित करें कि binaryएस / ftp फाइल ट्रांसफर के लिए मोड का उपयोग करना है तो विंडोज लाइन ब्रेक \r\nको यूनिक्स स्टाइल लाइन ब्रेक में परिवर्तित करने के लिए छोड़ दें \n
wqw

6

कुछ गंदा है जो आप कर सकते हैं। आप 503 प्रतिक्रियाओं को ब्लॉक कर सकते हैं, जिसके परिणामस्वरूप कस्टम 502 त्रुटि वापस आएगी जिसके लिए आप एक त्रुटि पृष्ठ बना सकते हैं। हालांकि, ध्यान रखें कि किसी भी कारण से हाइप्रोक्स को 502 (अमान्य प्रतिक्रिया) वापस करना होगा वही चीज़ वापस आ जाएगी।

मूल रूप से यह "rspdeny ^ HTTP / 1.1 503" जितना ही सरल है, जितना कि "एररफाइल 502" के साथ।


5

हमारे पास विरासत प्रणाली पर चल रही हमारी वेबसाइट का एक हिस्सा है, और मैंने निम्नलिखित का उपयोग करके समाप्त किया:

errorfile 502 /etc/haproxy/errors/502.http

acl is_internal_error status ge 500

rspideny . if is_internal_error

आशा है कि यह मदद करता है (भले ही यह 8 महीने बाद हो)।

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