AWS लोड बैलेंसर के पीछे वर्डप्रेस साइट कैसे डालते हैं

Aug 18 2020

हमारे पास AWS EC2 linux सर्वर पर एक पुराना वर्डप्रेस साइट है जिसे मैं लोड बैलेंसर के पीछे लगाने की कोशिश कर रहा हूं ताकि मैं HTTPS और WAF का उपयोग कर सकूं। मैं कुछ हद तक अनुभवी sysadmin हूं लेकिन वर्डप्रेस के लिए बहुत नया हूं। मुझे HTTPS पर लोड करने के लिए सामग्री प्राप्त करने में परेशानी हो रही है जबकि एक ही समय में लोड बैलेंसर और सर्वर के बीच रीडायरेक्ट लूप में नहीं मिल रहा है।

मेरे पास पोर्ट 80 पर सर्वर से बात करने के लिए लोड बैलेंसर सेटअप है और अगर WP_SITEURL / WP_HOME http: // पर सेट है, तो मुझे क्रोम देव कंसोल में मिश्रित सामग्री त्रुटियों का एक गुच्छा मिलता है क्योंकि यह स्क्रिप्ट और सीएसएस को लोड करने की कोशिश कर रहा है एचटीटीपी। अगर मैं WP_SITEURL / WP_HOME को https: // में बदलता हूं, तो यह एक रीडायरेक्ट लूप बनाता है क्योंकि वर्डप्रेस लोड बैलेंसर को रीडायरेक्ट करने की कोशिश करता रहता है, जो कि पोर्ट 80 पर, https के लिए संवाद करने की कोशिश कर रहा है।

क्या संसाधन, स्क्रिप्ट आदि के लिए आधार URL होने के बावजूद लोड बैलेंसर को पोर्ट 80 पर सर्वर तक पहुंचने की अनुमति देने का एक तरीका है, https हो?

जवाब

1 kierzniak Aug 27 2020 at 23:59

जब वर्डप्रेस https प्रॉक्सी (आपके लोड बैलेंसर) के पीछे होता है, तो यह नहीं पता होता है कि https सक्षम है। प्रॉक्सी (443 पोर्ट) के माध्यम से प्रॉक्सी काम कर रहा है लेकिन प्रॉक्सी और वर्डप्रेस के बीच संचार http (80 पोर्ट) के माध्यम से होता है। वर्डप्रेस ट्रैफ़िक के लिए http के माध्यम से है, इसीलिए आपको https से http (वर्डप्रेस द्वारा) और फिर से http से https (प्रॉक्सी द्वारा) पर रीडायरेक्ट लूप मिलता है। आपको वर्डप्रेस को https पर काम शुरू करने के लिए मजबूर करना होगा।

इस लाइन को अपने में पेस्ट करें wp-config.php

$_SERVER['HTTPS'] = 'on';

कभी-कभी प्रॉक्सी ने HTTP_X_FORWARDED_PROTOवर्डप्रेस को अतिरिक्त हेडर भेजा है ताकि पता चल सके कि मूल ट्रैफ़िक https पर है। आप इसे थोड़ा अधिक लचीला होने के लिए उपयोग कर सकते हैं

if (isset($_SERVER['HTTP_X_FORWARDED_PROTO']) && $_SERVER['HTTP_X_FORWARDED_PROTO'] === 'https') { $_SERVER['HTTPS'] = 'on';
}

बदलें WP_SITEURLऔर WP_HOMEhttps का उपयोग करने के लिए। और डेटाबेस के सभी लिंक को https में बदलें।

संदर्भ: https://developer.wordpress.org/reference/functions/is_ssl/