Wordpress https eklentisini kullanarak AWS ELB ve wordpress sitesi ile Sonsuz Yönlendirme Döngüsü


11

Wordpress 3.2.1 çalıştıran Ubuntu Sunucumu gösterecek bir AWS ELB yapılandırdım. Ben bir yük dengeleyici arkasına koydu kadar sunucuda her şey harika çalıştı.

Yük dengeleyiciyi 80 numaralı bağlantı noktasına 80 numaralı bağlantı noktasına ve 443 numaralı bağlantı noktasını 80 numaralı bağlantı noktasına yönlendireceğim.

Sanal ana bilgisayar dosyamı başlıkları direkten kontrol edecek şekilde ayarladım:


RewriteCond% {HTTP: X-Forwarded-Proto}! Https
RewriteRule! / Status https: //% {SERVER_NAME}% {REQUEST_URI} [L, R] Üzerinde RewriteEngine

Şimdi bir https URL'sine gittiğimde şu mesajı alıyorum:

Bu web sayfasının yönlendirme döngüsü var https://mywebsite.com/securepage/ adresindeki
web sayfası çok fazla yönlendirmeye neden oldu

Wordpress https eklentisini devre dışı bıraktığımda
( http://wordpress.org/extend/plugins/wordpress-https/ )
Sayfalar çalışır, ancak şimdi karışık içerikle doludur. https olması gereken sayfalar artık https değildir.

Direkt yerine doğrudan sunucuya erişir erişmez tekrar çalışır.

Bu AWS ELB ile çalışmak için nasıl alabilirim hakkında herhangi bir fikir?


kalıcı bağlantıyı güncelledin mi? genellikle wordpress'deki kalıcı bağlantı ayarını güncellemeliyiz
user905953

Yanıtlar:


13

ELB yapılandırmanızı göndermeden ELB'nin HTTPS (443 / tcp) trafiğini HTTP (80 / tcp) üzerindeki EC2 örneğine yönlendirdiğini tahmin ederim. Sonra siz .htaccessve eklenti yeniden HTTPS'ye yönlendirmeye çalışıyorsunuz çünkü HTTP üzerinden görülüyor.

EC2 konsolunuza bir göz atın Network & Security > Load Balancersve şunu söyleyeceksiniz Port Configuration:443 forwarding to 80 (HTTPS, Certificate: blah)


1
Buradaki kişi de aynı sorunu yaşıyordu. forums.aws.amazon.com/…
ChickenFur


senin
sağını

Müşterilerimden birini 2 yılı aşkın bir süredir AWS altında çalıştırıyorum ... Sorunuzu okuduğumda aklıma ilk kez şüpheli geldi.
Jeremy Bouse

1
LB'yi 443'ten 443'e çevirmek sorunu düzeltti :) Teşekkürler!
ChickenFur

17

Bunu kendinize httpd.confveya bir.htaccess

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

Yük dengeleyici + HTTPS kullanırken, web sunucunuz HTTPS'nin ön uçta kullanıldığından habersizdir, bu nedenle HTTPS zaten kullanılıyorsa HTTPS sitesine yönlendirme yapmaya devam eder.

Yukarıdaki, Amazon'un Yük Dengeleyicisinin gönderdiği üstbilgiyi ( X-Forwarded-Proto: https) Wordpress ve diğer PHP komut dosyalarının ( HTTPS=1) anladığı bir ortam değişkenine çevirecektir.


3
SSL şifre çözme
ELB'de

1
Nginx iseniz, benzer bir ek olacaktır:fastcgi_param HTTPS on;
Akash Budhia

Bu yazı benim saat süren acıyı ... THX
Daywalker

3

Amazon'a göre burada https://d0.awsstatic.com/whitepapers/deploying-wordpress-with-aws-elastic-beanstalk.pdf düzeltme:

/** 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';}

Hala sonsuz döngü ile sona erdi, bu yüzden WordPress yapılandırmamı aşağıdaki gibi değiştirdim:

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

için:

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

Bu, http yazsa bile kullanıcıları https'ye zorlar, ayrıca WP_HOME'u yerel ana bilgisayara güncellediğinizden ve https artık varsayılan olmadığından siteyi çevrimdışı olarak geliştirmeyi kolaylaştırır


1

Kendimi başka bir yararlı gönderiden alıntılamak https://serverfault.com/a/858308/450836 :

Benim için $ _SERVER ['HTTPS'] = 'on' ayarlamak yeterliydi; wp-config.php dosyasında. ELB'de SSL'yi sonlandıran AWS ELB kullanıyorum. Bu nedenle nginx, Port 80 (vernik sonrası 8080) talebini kabul eder ve açık bir şekilde PHP'nin sitenin zaten https kullandığını söyleyene kadar wordpress onunla başa çıkamamış gibi görünüyor ...

SSL olmayan ELB Dinleyici için tüm trafiği varsayılan dinleyici olarak https'ye yönlendirmek için ayrı bir yapılandırma kullanıyorum.


0

@Tim'in önerdiği gibi, $_SERVER['HTTPS']='on';wp-config.php'deki bu benim için hile yaptı.

HTTPS'yi zorlamak için bunu .htaccess dosyama da ekledim:

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 aws'da çok fazla yönlendirme sorunu düzeltildi

Üstbilgi modülünü etkinleştirin ve ardından apache config'te aşağıdaki girişi ekleyin

SetEnvIf X-Forwarded-Proto "https" HTTPS = on RequestHeader HTTPS ayarladı "on" env = HTTPS

    RewriteEngine On
    RewriteCond %{HTTP:X-Forwarded-Proto} !https
    RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.