एडब्ल्यूएस ईएलबी और वर्डप्रेस https प्लगइन का उपयोग करके वर्डप्रेस साइट के साथ अंतहीन रीडायरेक्ट लूप


11

मैंने Word Ubuntu 3.2.1 को चलाने वाले अपने Ubuntu सर्वर को इंगित करने के लिए AWS ELB को कॉन्फ़िगर किया है। सर्वर पर सब कुछ बहुत अच्छा काम किया जब तक कि मैंने इसे लोड बैलेंसर के पीछे नहीं रखा।

मैंने लोड बैलेंसर को पोर्ट 80 से पोर्ट 80 और पोर्ट 443 से पोर्ट 80 पर फॉरवर्ड किया।

मैं एल्ब से हेडर की जांच करने के लिए अपनी वर्चुअल होस्ट फ़ाइल सेटअप करता हूं:

RewriteEngine पर
RewriteCond% {HTTP: X-Forwarded-आद्य} https!
RewriteRule / स्थिति! Https: //% {SERVER_NAME}% {REQUEST_URI} [एल, आर]

अब जब भी मैं किसी https url पर जाता हूं तो मुझे यह संदेश मिलता है:

इस वेबपेज में एक रीडायरेक्ट लूप है
https://mywebsite.com/securepage/ पर वेबपेज बहुत अधिक रीडायरेक्ट हुआ है

जैसे ही मैंने वर्डप्रेस https प्लगइन
( http://wordpress.org/extend/plugins/wordpress-https/ ) को निष्क्रिय कर दिया
पेज काम करते हैं लेकिन अब मिश्रित सामग्री से भरे हुए हैं। वे पृष्ठ जो https होने चाहिए, वे अब https नहीं हैं।

जैसे ही मैं एल्ब के माध्यम से सीधे सर्वर तक पहुंचता हूं यह फिर से काम करता है।

AWS ELB के साथ काम करने के लिए मैं इसे कैसे प्राप्त कर सकता हूं इस पर कोई विचार?


क्या आपने पर्मलिंक को अपडेट किया है? आमतौर पर हमें वर्डप्रेस पर
पर्मलिंक

जवाबों:


13

मैं आपके ईएलबी कॉन्फ़िगरेशन को पोस्ट किए बिना एक अनुमान लगाऊंगा कि ईएलबी एचटीटीपीएस (443 / टीसीपी) ट्रैफ़िक को ईसी 2 उदाहरण HTTP (80 / टीसीपी) पर पुनर्निर्देशित कर रहा है। तब आप .htaccessऔर प्लगइन इसे HTTPS पर वापस रीडायरेक्ट करने का प्रयास कर रहे हैं क्योंकि यह HTTP पर देखा जा रहा है।

के तहत अपने EC2 कंसोल पर एक नज़र डालें Network & Security > Load Balancersऔर मुझे लगता है कि आप Port Configurationकुछ की तर्ज पर कुछ कहते हैं देखेंगे443 forwarding to 80 (HTTPS, Certificate: blah)


1
यहां इस व्यक्ति को भी यही समस्या थी। forum.aws.amazon.com/…
चिकनफ़ोर

1
और यह एक समान stackoverflow.com/questions/5741210/…
ChickenFur

अपने दाहिने मैं 443 80 को अग्रेषित कर रहा हूँ
ChickenFur

अब मैं AWS के तहत अपने एक क्लाइंट को 2 साल से अधिक समय से चला रहा हूं ... जब मैंने आपका प्रश्न पढ़ा तो पहली बात यह कि मेरे दिमाग में यह संदेह पैदा हुआ।
जेरेमी बोस

1
443 से 443 तक इंगित करने के लिए LB को बदलना इसे तय किया :) धन्यवाद!
चिकनगुर

17

इसे अपने httpd.confया एक में जोड़ने का प्रयास करें.htaccess

SetEnvIfNoCase X-FORWARDED-PROTO "^https$" HTTPS

लोड बैलेंसर + HTTPS का उपयोग करते समय, आपका वेबसर्वर इस बात से अनजान होता है कि HTTPS का उपयोग फ्रंट एंड पर किया जा रहा है, इसलिए HTTPS साइट पर रीडायरेक्ट करने का प्रयास करता रहता है, जब वास्तव में, HTTPS पहले से ही उपयोग किया जा रहा है।

ऊपर हैडर है कि अमेज़न लोड Balancer भेजता है ( X-Forwarded-Proto: https) एक पर्यावरण चर में Wordpress और अन्य PHP स्क्रिप्ट समझते हैं ( HTTPS=1) में अनुवाद करेंगे


3
यह सही तरीका होगा ईएलबी पर एसएसएल डिक्रिप्शन अवशेष के रूप में यह करते हैं,
toske

1
यदि आप नगनेक्स पर हैं, तो इसके अतिरिक्त होगा:fastcgi_param HTTPS on;
आकाश बुधिया

इस पोस्ट ने मेरे घंटे के लंबे दर्द को समाप्त कर दिया ... THX
Daywalker

3

अमेज़न के अनुसार यहाँ https://d0.awsstatic.com/whitepapers/deploying-wordpress-with-aws-elastic-beanstalk.pdf फिक्स है:

/** Detect if SSL is used. This is required since we are terminating SSL either on CloudFront or on ELB */ 
if (($_SERVER['HTTP_CLOUDFRONT_FORWARDED_PROTO'] == 'https') OR ($_SERVER['HTTP_X_FORWARDED_PROTO'] == 'https'))
    {$_SERVER['HTTPS']='on';}

मैंने अभी भी अंतहीन लूप के साथ समाप्त किया है, इसलिए मैंने अपना वर्डप्रेस कॉन्फिगर इससे बदल दिया है:

define('WP_HOME','http://www.example.com');
define('WP_SITEURL','http://www.example.com');

सेवा:

define('WP_HOME','https://www.example.com');
define('WP_SITEURL','https://www.example.com');

यह उपयोगकर्ताओं को https के लिए बाध्य करेगा, भले ही वे http टाइप करते हों, और इससे साइट को ऑफलाइन विकसित करना आसान हो जाता है क्योंकि आप अभी WP_HOME को स्थानीय होस्ट में अपडेट करते हैं और https अब डिफ़ॉल्ट नहीं है


1

एक और उपयोगी पोस्ट https://serverfault.com/a/858308/450836 से खुद को उद्धृत करते हुए :

मेरे लिए यह $ _SERVER ['HTTPS'] = 'on' सेट करने के लिए पर्याप्त था; wp-config.php में। मैं AWS ELB का उपयोग कर रहा हूं जो SSL को ELB पर समाप्त करता है। इसलिए nginx पोर्ट 80 (वार्निश के बाद 8080) पर अनुरोध स्वीकार करता है और ऐसा लगता है जैसे कि वर्डप्रेस तब तक इससे निपटने में सक्षम नहीं था जब तक आप स्पष्ट रूप से PHP को नहीं बताते कि साइट पहले से ही https का उपयोग करती है ...

गैर-एसएसएल ईएलबी श्रोता के लिए मैं डिफ़ॉल्ट श्रोता के रूप में सभी ट्रैफ़िक को पुनर्निर्देशित करने के लिए एक अलग कॉन्फ़िगरेशन का उपयोग करता हूं।


0

जैसा कि @Tim ने सुझाव दिया है, $_SERVER['HTTPS']='on';wp-config.php में यह मेरे लिए ट्रिक है।

मैंने HTTPS को लागू करने के लिए इसे अपनी .htaccess फ़ाइल में भी जोड़ा:

RewriteEngine On
RewriteCond %{HTTPS} !=on
RewriteCond %{HTTP:X-Forwarded-Proto} !https
RewriteCond %{REMOTE_ADDR} !^127\.0\.0\.1$
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=302]

0

ALB में कई पुनर्निर्देशन मुद्दों के लिए फिक्स ALB

शीर्ष लेख मॉड्यूल सक्षम करें और फिर अपाचे विन्यास में निम्नलिखित प्रविष्टि जोड़ें

SetEnvIf X-Forwarded-Proto "https" HTTPS = RequestHeader सेट HTTPS पर "env = HTTPS"

    RewriteEngine On
    RewriteCond %{HTTP:X-Forwarded-Proto} !https
    RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.