जवाबों:
आप 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 द्वारा पाई गई त्रुटियों का पता लगाया और वापस किया गया। यही कारण है कि समर्थित त्रुटियों की सूची एक छोटे से सेट तक सीमित है।
कुछ गंदा है जो आप कर सकते हैं। आप 503 प्रतिक्रियाओं को ब्लॉक कर सकते हैं, जिसके परिणामस्वरूप कस्टम 502 त्रुटि वापस आएगी जिसके लिए आप एक त्रुटि पृष्ठ बना सकते हैं। हालांकि, ध्यान रखें कि किसी भी कारण से हाइप्रोक्स को 502 (अमान्य प्रतिक्रिया) वापस करना होगा वही चीज़ वापस आ जाएगी।
मूल रूप से यह "rspdeny ^ HTTP / 1.1 503" जितना ही सरल है, जितना कि "एररफाइल 502" के साथ।
हमारे पास विरासत प्रणाली पर चल रही हमारी वेबसाइट का एक हिस्सा है, और मैंने निम्नलिखित का उपयोग करके समाप्त किया:
errorfile 502 /etc/haproxy/errors/502.http
acl is_internal_error status ge 500
rspideny . if is_internal_error
आशा है कि यह मदद करता है (भले ही यह 8 महीने बाद हो)।
\r\n
HTTP प्रोटोकॉल विनिर्देश के अनुपालन के लिए हेडर में लाइन ब्रेक के लिए उपयोग करना चाहिए । यदि विंडोज़ बॉक्स से अपलोड करना सुनिश्चित करें किbinary
एस / ftp फाइल ट्रांसफर के लिए मोड का उपयोग करना है तो विंडोज लाइन ब्रेक\r\n
को यूनिक्स स्टाइल लाइन ब्रेक में परिवर्तित करने के लिए छोड़ दें\n
।