Das Setzen von $ _SERVER ['HTTPS'] = 'on' verhindert den Zugriff auf wp-admin
-
-
Sie sagennicht viel über den Rest Ihrer Konfiguration.Haben Sie `define ('FORCE_SSL_ADMIN',true);`gesetzt?You dont say much about the rest of your configuration. Did you set `define('FORCE_SSL_ADMIN', true);`
- 1
- 2016-12-23
- user42826
-
Ich habe 'FORCE_SSL_ADMIN'nicht definiert.Ich werdees versuchen.I did not define 'FORCE_SSL_ADMIN'. I will try it.
- 0
- 2016-12-24
- nu everest
-
Siemüssen überprüfen,ob die https-Cookies auch vom Load Balancer über httpgesendet werden.Es klingt wie sienichtgesendet werden.Natürlichmuss auch umgekehrt überprüft werden,ob die von Ihnengesetzten Cookies über https übertragen werdenyou need to check that the https cookies are also sent from the load balancer over http. It sounds like they are not sent. Obviously also the other way around need to be checked, are the cookies that you set are being transferred over https
- 0
- 2016-12-24
- Mark Kaplun
-
1 Antworten
- Stimmen
-
- 2016-12-24
Besonderer Dankgeht an user42826.
Gemäß dem Kodex:
Wenn WordPress hintereinem Reverse-Proxygehostet wird,der SSLbereitstellt,aber selbst ohne SSLgehostet wird,senden diese Optionen zunächst alle Anforderungenin eine Endlosumleitungsschleife. Um dies zu vermeiden,können Sie WordPress so konfigurieren,dass der HTTP_X_FORWARDED_PROTO-Headererkannt wird (vorausgesetzt,Sie haben den Reverse-Proxy ordnungsgemäß konfiguriert,um diesen Headerfestzulegen).
Diefolgenden Aktionen lösen das Problem.
Fügen Sie dies zu wp-config.php hinzu. ( Codex-Referenz )
/* SSL Settings */ define('FORCE_SSL_ADMIN', true); /* Turn HTTPS 'on' if HTTP_X_FORWARDED_PROTO matches 'https' */ if (strpos($_SERVER['HTTP_X_FORWARDED_PROTO'], 'https') !== false) { $_SERVER['HTTPS'] = 'on'; }
Entfernen Sie dies ausfunctions.php,da diesnichterforderlichist.
/** * Make PHP HTTPS aware via HTTP_X_FORWARDED_PROTO */ if(isset($_SERVER['HTTP_X_FORWARDED_PROTO']) && $_SERVER['HTTP_X_FORWARDED_PROTO'] == 'https') { $_SERVER['HTTPS']='on'; }
Special thanks to user42826.
According to the codex:
If WordPress is hosted behind a reverse proxy that provides SSL, but is hosted itself without SSL, these options will initially send any requests into an infinite redirect loop. To avoid this, you may configure WordPress to recognize the HTTP_X_FORWARDED_PROTO header (assuming you have properly configured the reverse proxy to set that header).
The following actions will solve the problem.
Add this to wp-config.php. (codex reference)
/* SSL Settings */ define('FORCE_SSL_ADMIN', true); /* Turn HTTPS 'on' if HTTP_X_FORWARDED_PROTO matches 'https' */ if (strpos($_SERVER['HTTP_X_FORWARDED_PROTO'], 'https') !== false) { $_SERVER['HTTPS'] = 'on'; }
Remove this from functions.php as it is unnecessary.
/** * Make PHP HTTPS aware via HTTP_X_FORWARDED_PROTO */ if(isset($_SERVER['HTTP_X_FORWARDED_PROTO']) && $_SERVER['HTTP_X_FORWARDED_PROTO'] == 'https') { $_SERVER['HTTPS']='on'; }
-
Der Grund dafürist,dass Cookiesfür sichere Sitzungen hinter dem Load Balancer verlorengehen,da LB SSL ausführt,das Backendjedochnur httpist.Schön zu sehen,dass andere an Architekturen auf Unternehmensebene arbeiten;)The reason is that secure sessions cookies get lost when behind the load balancer because LB is doing SSL but backend is plain http. Nice to see others working on enterprise level architectures ;)
- 1
- 2016-12-24
- user42826
-
@ user42826 Das Schöne an diesem Setupist,dassich FORCE_SSL_ADMINeinfach auskommentieren kann,wennich den Administratorzugriff verbietenmöchte,odergibt es andere Nebenwirkungen,diemich veranlassen sollten,diese Denkweise zu überdenken?@user42826 What is nice about this setup is that I can just comment out FORCE_SSL_ADMIN if I want to prohibit admin access, or are there other side effects that should cause me to reconsider this line of thinking?
- 0
- 2016-12-24
- nu everest
-
In Ihrem Setup klingtes so,als würde das Nicht-Setzen von FORCE_SSL_ADMIN den Administratorzugriff verhindern. Abhängig von Ihren Anforderungengibt esjedochbessere Möglichkeiten,dies zutun.Beispiele: Verhindern Sie den Zugriff von wp-admin oder wp-login.phpin der .htaccess- oder Apache-Konfiguration,entfernen Sie dienative WP-Authentifizierung über das Plugin,erstellen Sie die WPneu,sodass sich die wp-admin-URL von der öffentlichen URL unterscheidetIn your setup, it sounds like not setting FORCE_SSL_ADMIN prevents admin access, but there are better ways to do that depending on your requirements. Examples: prevent wp-admin or wp-login.php access in .htaccess or apache config, remove WP native authentication via plugin, re-architecture WP so that wp-admin url is different than public url, etc
- 1
- 2016-12-25
- user42826
-
Stellen Sie sicher,dass Sie diesen Code vor der Zeile `require_once (ABSPATH. 'Wp-settings.php');` hinzufügen.[Besonderer Dankgeht anjtlin dieser Antwort.] (Https://wordpress.stackexchange.com/a/263461/78043)Make sure to add this code before the `require_once(ABSPATH . 'wp-settings.php');` line. [Special thanks to jtl in this answer.](https://wordpress.stackexchange.com/a/263461/78043)
- 6
- 2017-09-14
- Aaroninus
-
@ Aaroninus danke,ich verwende Cloudflareflexible SSL und ohne Ihren Kommentar hätteich wieder Zeit damit verbracht,zu suchen.Ich habe diese verwandte Frage zuvorgefunden: https://wordpress.stackexchange.com/questions/170165/wordpress-wp-admin-https-redirect-loop@Aaroninus thanks, I use Cloudflare flexible SSL and without your comment I would have spent time searching again. I found this related question previously: https://wordpress.stackexchange.com/questions/170165/wordpress-wp-admin-https-redirect-loop
- 0
- 2017-12-21
- baptx
-
Esfunktionierte auf Amazon Instanz.Hatte Mühe,den Codenach oben zu verschieben,hat den Jobgemacht.It worked on amazon instance. Was struggling moving the code to top did the job.
- 0
- 2018-09-11
- Krishnadas PC
Zunächsteinmal sitztmein Server hintereinem Load Balancer. Mein SSL-Zertifikatbefindet sich auf dem Load Balancer und verarbeitet HTTPS. Die an Port 443eingehenden Daten werden über HTTP an Port 80 an den Wordpress-Server weitergeleitet.
WordPress und PHP kennenmeine Serverkonfigurationjedochnicht. Diesführt dazu,dass der Browser hinsichtlich der Gültigkeitmeinesgültigen SSL-Zertifikatsmisstrauisch wird.
Um dies zubeheben,habeich denfolgenden Code zufunctions.php hinzugefügt. Ich habe diesen Code hier und den Codex stimmt zu .
Diesfunktioniert hervorragendfür das Frontend,aberjetztist der Zugriff auf/wp-admin/auchmit meinem Administratorkontonichtmöglich. Nach dem Anmeldenerhalteich die Meldung "Entschuldigung,Sie dürfennicht auf diese Seite zugreifen." Es wird keine weitere Hilfebereitgestellt.
Also habeich den Ordner wp-admin durchsucht undfestgestellt,dass die Wörter "Entschuldigung,Sie dürfennicht auf diese Seite zugreifen".erscheinen 17 verschiedene Male.
Diemeisten dieser Fehlermeldungen sindmit einer Überprüfung der Benutzerberechtigungen verbunden.
Wie halteich HTTPSeingeschaltet undbehalte den Administratorzugriff?
Zusammenfassung:
UPDATE:
Ich habefestgestellt,dass die Fehlermeldung von wp-admin/menu.php und diesem Codeabschnitt unten stammt. Ich habe am Ende des Fehlers
menu.php
hinzugefügt,um herauszufinden,dasses sich um diese Datei handelt.Ich versteheimmernochnicht,wieich dasbeheben soll.