वेब एक्सेलेरेटर में 502 और 504 त्रुटियों को कैश कैसे करें

सकुरा क्लाउड वेब एक्सेलेरेटर में 502 (बद गेटवे) और 504 (गेटवे टाइमआउट) को कैश करने का तरीका है।

जब कैश नहीं की जा सकने वाली सामग्री पर बहुत अधिक पहुंच होती है या कैश की जा सकने वाली सामग्री के लिए भी
सर्वर की उच्च लोड के कारण मूल सर्वर 502 (बद गेटवे) या 504 (गेटवे टाइमआउट) को वापस कर सकता है।

सामान्यतः, nginx जैसी त्रुटि प्रतिक्रिया में Cache-Control हेडर नहीं होता है, इसलिए इसे कैश नहीं किया जाता है,
जिससे मूल सर्वर पर लोड जारी रहता है।

इसलिए, nginx की सेटिंग में त्रुटि प्रतिक्रिया में Cache-Control हेडर को जोड़कर, वेब एक्सेलेरेटर में
कैश करके मूल सर्वर पर लोड को हल्का किया जा सकता है।

यहाँ हम मानते हैं कि nginx का उपयोग मूल में किया जा रहा है, और upstream में ऐप सर्वर आदि मौजूद हैं।

nginx की सेटिंग

    location / {
        error_page 502 = @webaccel_handle_504;
        error_page 504 = @webaccel_handle_504;
        # संक्षेप में
    }
    location @webaccel_handle_502 {
        add_header Cache-Control "s-maxage=30" always;
        return 502;
    }
    location @webaccel_handle_504 {
        add_header Cache-Control "s-maxage=30" always;
        return 504;
    }

उपरोक्त सेटिंग के द्वारा, यदि nginx 502 या 504 त्रुटि प्रतिक्रिया लौटाता है, तो Cache-Control हेडर में s-maxage=30
जोड़ा जाएगा, जिससे वेब एक्सेलेरेटर को 30 सेकंड के लिए कैश करने की अनुमति मिलेगी।

इससे अस्थायी त्रुटियों को भी कैश करके मूल सर्वर पर लोड को हल्का करने की उम्मीद है।

मेमो

  • error_page की प्रतिक्रिया आदि में, त्रुटि के समय add_header को जोड़ने की आवश्यकता है, इसके लिए always जोड़ा जाना आवश्यक है।