wake-up-neo.net

Warum kann die Datei /wp-login.php nicht geladen werden?

Ich habe mehrere Fragen gepostet gesehen, die entweder an diesem bestimmten Element vorbeigekommen sind oder unbeantwortet bleiben.

Grundsätzlich habe ich einen Lastenausgleich zwischen zwei Instanzen derselben WordPress-Website mit nginx im Vordergrund eingerichtet. Um mich erfolgreich anzumelden, muss ich alle Anfragen nach /wp-admin oder /wp-login.php an einen bestimmten Server weiterleiten. Es scheint egal zu sein, auf welchem ​​Server alle Anfragen an denselben Server gehen.

Zuerst dachte ich, ein Server speichere Sitzungsdaten, aber ich habe meine PHP Sitzungen geclustert, nur um herauszufinden, dass sie nichts speichern. Ich habe Cookies überprüft, aber dort wird nichts serversensitives angezeigt (nur das Test-Cookie WP mit statischem Wert). Ich habe das Dateisystem kontinuierlich überwacht, um festzustellen, ob möglicherweise eine Datei auf einem der Back-End-Anwendungsserver erstellt wurde, aber ohne Erfolg. Ich habe sogar das Anmeldeformular überprüft, das so einfach wie möglich zu sein scheint.

Ich habe im wahrsten Sinne des Wortes keine Ahnung, warum es WP überhaupt etwas ausmacht, auf welchem ​​Server die Anforderung POST tatsächlich eingegangen ist.

Ich kann die Nginx-Konfiguration liefern, wenn Sie wollen, aber es ist ziemlich einfach und ich möchte diesen Beitrag nicht überladen.

1
Bratchley

Ein paar Dinge zu überprüfen:

  • Überprüfen Sie wp_salt . Stellen Sie sicher, dass alle Webserver auf demselben Satz von Salzen in der Datei wp-config.php ausgeführt werden. Idealerweise sollten diese von einem einzigen Ort aus gespiegelt werden.

  • Überprüfen Sie is_ssl() und stellen Sie sicher, dass diese Funktion SSL auf allen Ihren Webservern ordnungsgemäß erkennt. Ich habe gesehen, dass diese kleine Funktion viele Kopfschmerzen verursacht, wenn der Load Balancer eine interne Verbindung über Port 80 zum Webserver herstellt. Wenn is_ssl() dies (aufgrund des Lastausgleichs) nicht erkennt, kann dies zu diesem Problem führen. d.h. mögliche Cookie-Protokolländerungen.

Eine schnelle Lösung besteht darin, in wp-config.php nach dem weitergeleiteten Protokoll zu suchen.

if ( ! empty( $_SERVER['HTTP_X_FORWARDED_PROTO'] )
        && strcasecmp( $_SERVER['HTTP_X_FORWARDED_PROTO'], 'https' ) === 0 ) {
    $_SERVER['HTTPS'] = 'on'; // Convince WordPress.
}
  • Überprüfen Sie die Umgebungsvariable $_SERVER['REMOTE_ADDR'] und stellen Sie sicher, dass diese auf allen Webservern auf die gleiche Weise ausgefüllt wird. Es gibt viele Plugins für WordPress, die dies verwenden, ohne ein Szenario mit Lastenausgleich zu berücksichtigen.

    Die einfachste Möglichkeit, dies zu überprüfen, besteht darin, die <?php phpinfo(); auf einigen wenigen Webservern abzulegen und zu überprüfen, ob alle diese Einstellungen korrekt vornehmen. Oder endet die tatsächliche IP-Adresse in HTTP_X_FORWARDED_FOR, HTTP_CLIENT_IP oder etwas anderem? Kurz gesagt, vermeiden Sie verwirrende Plugins, indem Sie REMOTE_ADDR korrigieren.

  • Stellen Sie sicher, dass die Systemzeit auf allen Webservern synchron ist.

  • Sehen Sie sich Plugins, die Brute-Force-Angriffe verhindern sollen, genauer an, da diese mit größerer Wahrscheinlichkeit eine strenge Validierung durchführen. B. Testen des Benutzeragenten, der IP-Adresse, Änderungen der IP-Adresse usw. Ihre Aufgabe ist es, sich nicht täuschen zu lassen, aber manchmal führen sie zu Fehlalarmen.


Wenn die Probleme weiterhin bestehen, veröffentlichen Sie bitte eine Liste der aktiven Plugins, die Sie ausführen, und die von Ihnen erwähnte Nginx-Konfiguration. FastCGI-Parameter und Proxy-Konfigurationen, die Sie möglicherweise haben oder nicht, sind gut anzusehen.

2
jaswrks