मैं डिफ़ॉल्ट "गुरु ध्यान" संदेश के बजाय कस्टम HTML त्रुटि पृष्ठ दिखाने के लिए वार्निश को कैसे बता सकता हूं ?
मैं डिफ़ॉल्ट "गुरु ध्यान" संदेश के बजाय कस्टम HTML त्रुटि पृष्ठ दिखाने के लिए वार्निश को कैसे बता सकता हूं ?
जवाबों:
वार्निश पूछे जाने वाले प्रश्न इस के लिए vcl_error उपयोग करने का सुझाव (और यह कैसे मैं यह किया गया है):
यह त्रुटि पृष्ठ के लिए डिफ़ॉल्ट VCL है:
sub vcl_error {
set obj.http.Content-Type = "text/html; charset=utf-8";
synthetic {"
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html>
<head>
<title>"} obj.status " " obj.response {"</title>
</head>
<body>
<h1>Error "} obj.status " " obj.response {"</h1>
<p>"} obj.response {"</p>
<h3>Guru Meditation:</h3>
<p>XID: "} req.xid {"</p>
<address><a href="http://www.varnish-cache.org/">Varnish</a></address>
</body>
</html>
"};
return(deliver);
}
यदि आप एक कस्टम संस्करण चाहते हैं, तो बस अपने कॉन्फ़िगरेशन में फ़ंक्शन को ओवरराइड करें और synthetic
स्टेटमेंट में मार्कअप को बदलें ।
यदि आप अलग-अलग त्रुटि कोडों के लिए अलग-अलग मार्कअप चाहते हैं, तो आप ऐसा कर सकते हैं।
sub vcl_error {
set obj.http.Content-Type = "text/html; charset=utf-8";
if (obj.status == 404) {
synthetic {"
<!-- Markup for the 404 page goes here -->
"};
} else if (obj.status == 500) {
synthetic {"
<!-- Markup for the 500 page goes here -->
"};
} else {
synthetic {"
<!-- Markup for a generic error page goes here -->
"};
}
}
ध्यान दें कि उपरोक्त उत्तर वार्निश 3 के लिए हैं। चूंकि प्रश्न संस्करण की जानकारी को निर्दिष्ट नहीं करता है, इसलिए संस्करण 4 के उत्तर को भी शामिल करने के लिए उचित समय लगता है क्योंकि यह बदल गया है।
उम्मीद है कि यह लोगों को उपरोक्त उत्तरों को पढ़ने और उनके V4 VCL में vcl_error लगाने से बचाएगा :)
वार्निश 4.0 के लिए बिलिन वीसीएल
sub vcl_synth {
set resp.http.Content-Type = "text/html; charset=utf-8";
set resp.http.Retry-After = "5";
synthetic( {"<!DOCTYPE html>
<html>
<head>
<title>"} + resp.status + " " + resp.reason + {"</title>
</head>
<body>
<h1>Error "} + resp.status + " " + resp.reason + {"</h1>
<p>"} + resp.reason + {"</p>
<h3>Guru Meditation:</h3>
<p>XID: "} + req.xid + {"</p>
<hr>
<p>Varnish cache server</p>
</body>
</html>
"} );
return (deliver);
}
ध्यान दें कि यदि आप अपने VCL के भीतर से कोई त्रुटि फेंकना चाहते हैं, तो आप अब 'त्रुटि' फ़ंक्शन का उपयोग नहीं करेंगे, इसके बजाय आप करेंगे:
return (synth(405));
इसके अलावा, बैकएंड से 413, 417 और 503 त्रुटियां इस फ़ंडन के माध्यम से स्वचालित रूप से रूट की जाती हैं।
sub vcl_backend_error
, जैसा कि आप serverfault.com/a/665917/102757 और serverfault.com/a/716767/102757