Skonfigurowałem AWS ELB, aby wskazywał na mój Ubuntu Server z Wordpress 3.2.1. Wszystko działało świetnie na serwerze, dopóki nie postawiłem go za modułem równoważenia obciążenia.
Konfiguruję moduł równoważenia obciążenia, aby przekierował port 80 na port 80 i port 443 na port 80.
Konfiguruję plik wirtualnych hostów, aby sprawdzać nagłówki z łokcia:
RewriteEngine On
RewriteCond% {HTTP: X-Forwarded-Proto}! Https
RewriteRule! / Status https: //% {SERVER_NAME}% {REQUEST_URI} [L, R]
Teraz za każdym razem, gdy przechodzę do adresu URL https, otrzymuję tę wiadomość:
Ta strona zawiera pętlę przekierowań
Strona internetowa pod adresem https://mywebsite.com/securepage/ spowodowała zbyt wiele przekierowań
Jak tylko wyłączę wtyczkę wordpress https
( http://wordpress.org/extend/plugins/wordpress-https/ )
Strony działają, ale teraz są pełne mieszanych treści. strony, które powinny być https, nie są już https.
Gdy tylko uzyskam bezpośredni dostęp do serwera zamiast przez łokieć, znów działa.
Jakieś pomysły na to, jak mogę to zrobić z AWB ELB?
Odpowiedzi:
Zaryzykuję zgadnięcie bez opublikowania konfiguracji ELB, że ELB przekierowuje ruch HTTPS (443 / tcp) do instancji EC2 na HTTP (80 / tcp). Następnie Ty
.htaccess
i wtyczka próbujesz przekierować go z powrotem do HTTPS, ponieważ jest on wyświetlany przez HTTP.Spójrz na swoją konsolę EC2 pod
Network & Security > Load Balancers
i wyobrażam sobie, że zobaczyszPort Configuration
coś podobnego do tego443 forwarding to 80 (HTTPS, Certificate: blah)
źródło
Spróbuj dodać to do swojego
httpd.conf
lub an.htaccess
Kiedy używasz modułu równoważenia obciążenia + HTTPS, twój serwer nie wie, że HTTPS jest używany w interfejsie, więc nadal próbuje przekierować na stronę HTTPS, podczas gdy w rzeczywistości HTTPS jest już używany.
Powyższe spowoduje przetłumaczenie nagłówka wysyłanego przez moduł równoważenia obciążenia Amazon (
X-Forwarded-Proto: https
) na zmienną środowiskową zrozumiałą dla Wordpress i innych skryptów PHP (HTTPS=1
)źródło
fastcgi_param HTTPS on;
Według Amazon tutaj https://d0.awsstatic.com/whitepapers/deploying-wordpress-with-aws-elastic-beanstalk.pdf poprawka jest następująca:
Nadal skończyłem z niekończącą się pętlą, więc zmieniłem konfigurację WordPress od:
do:
Zmusi to użytkowników do korzystania z https, nawet jeśli wpisają http, a także ułatwi rozwój witryny offline, ponieważ po prostu zaktualizujesz WP_HOME do lokalnego hosta, a https nie jest już domyślnym
źródło
Cytując siebie w innym pomocnym poście https://serverfault.com/a/858308/450836 :
W przypadku odbiornika ELB nieobsługującego protokołu SSL używam osobnej konfiguracji, aby przekierować cały ruch do https jako domyślnego odbiornika.
źródło
Jak sugerował @Tim, to
$_SERVER['HTTPS']='on';
w wp-config.php załatwiło sprawę .Dodałem to również do mojego pliku .htaccess, aby wymusić HTTPS:
źródło
Naprawiono zbyt wiele problemów z przekierowaniem w AWS ALB
Włącz moduł nagłówka, a następnie dodaj następujący wpis w konfiguracji apache
SetEnvIf X-Forwarded-Proto „https” HTTPS = na RequestHeader ustaw HTTPS „na” env = HTTPS
źródło