• Hallo WordPress-Gemeinde,

    ich arbeite an einem Umstand, den ich nicht mehr durchschaue und bitte um Unterstützung:

    WordPress läuft hier auf einem Apache auf Debian. Anfragen kommen über einen ReverseProxy (192.168.8.40) rein. Der ReverseProxy macht die ssl-Verschlüsselung. Die weitergeleiteten Anfragen an den WordPress-Server kommen unverschlüsselt an.

    Die Sache läuft gut, aber Anfragen an das WordPress-Backend (/wp-admin) werden extrem verzögert beantworte, und im error.log finde ich solche Einträge:

    [Fri Nov 01 09:35:37.235121 2024] [php:warn] [pid 38134:tid 38134] [client 192.168.8.40:43618] PHP Warning: Attempt to read property "post_name" on null in /var/www/html/wp-includes/link-template.php on line 517
    [Fri Nov 01 09:35:37.235165 2024] [php:warn] [pid 38134:tid 38134] [client 192.168.8.40:43618] PHP Warning: Attempt to read property "ID" on null in /var/www/html/wp-includes/link-template.php on line 534
    [Fri Nov 01 09:35:37.256484 2024] [php:warn] [pid 38134:tid 38134] [client 192.168.8.40:43618] PHP Warning: Attempt to read property "post_parent" on null in /var/www/html/wp-includes/link-template.php on line 479
    [Fri Nov 01 09:35:37.256583 2024] [php:warn] [pid 38134:tid 38134] [client 192.168.8.40:43618] PHP Warning: Attempt to read property "post_name" on null in /var/www/html/wp-includes/link-template.php on line 517
    [Fri Nov 01 09:35:37.256631 2024] [php:warn] [pid 38134:tid 38134] [client 192.168.8.40:43618] PHP Warning: Attempt to read property "ID" on null in /var/www/html/wp-includes/link-template.php on line 534

    Es sind dre Plugins installiert, u.A. Elementor Pro:
    Der fordert ‚connect and activate‘. Folge ich dieser Aufforderung, gibt es einen Fehler:

    cURL error 28: Failed to connect to my.elementor.com port 443 after 10001 ms: Timeout was reached

    Im error.log steht dann dies:

    [Fri Nov 01 09:39:50.925553 2024] [php:warn] [pid 39869:tid 39869] [client 192.168.8.40:43832] PHP Warning: Array to string conversion in /var/www/html/wp-includes/functions.php on line 3871, referer: https://treurat.de/wp-admin/index.php

    Versuche ich die Plugin-Details anzusehen, bekomme ich „Ein unerwarteter Fehler ist aufgetreten. Es scheint etwas bei WordPress.org oder mit dieser Serverkonfiguration nicht zu stimmen. Sollte das Problem weiter bestehen, nutze bitte die Support-Foren.“.

    +++++++

    Von
    https://.de/wp-admin/site-health.php
    habe ich mpch diese Erkenntnisse:

    Das REST-API hat einen Fehler gefunden

    Das REST-API ist eine Möglichkeit, wie WordPress und andere Anwendungen mit dem Server kommunizieren. Der Bildschirm des Block-Editors beispielsweise stützt sich auf die REST-API, um deine Beiträge und Seiten anzuzeigen und zu speichern.

    Beim Testen des REST-API ist ein Fehler aufgetreten:

    REST-API-Endpunkt: https://.de/wp-json/wp/v2/types/post?context=edit
    REST-API-Antwort: (http_request_failed) cURL error 28: Connection timed out after 10000 milliseconds

    +++++++

    WordPress.org konnte nicht erreicht werden

    Die Verbindung mit den WordPress-Servern wird verwendet, um nach neuen Versionen zu suchen und sowohl WordPress-Core, Themes oder Plugins zu installieren und zu aktualisieren.

    Fehler Deine Website kann WordPress.org nicht unter 198.143.164.251 erreichen und gab den Fehler zurück: cURL error 28: Connection timed out after 10000 milliseconds

    +++++++

    Deine Website konnte eine Loopback-Anfrage nicht abschließen Leistung

    Loopback-Anfragen werden verwendet, um geplante Ereignisse auszuführen, und werden auch von den integrierten Editoren für Themes und Plugins verwendet, um die Stabilität des Codes zu überprüfen.

    Die Loopback-Anfrage an deine Website ist fehlgeschlagen, das bedeutet, dass Funktionen, die sich auf sie verlassen, derzeit nicht wie erwartet funktionieren.
    Fehler: cURL error 28: Connection timed out after 10000 milliseconds (http_request_failed)

    +++++++

    Ich weiß nicht, welche Infos benötigt werden, um die Nuss zu knacken und verzichte daruaf, die Anfrage noch länger zu machen. Jegliche zusätzlich Info liefere ich gerne nach!

    Dank vorab für alle Ideen!

    B.

    • Dieses Thema wurde geändert vor 1 Monat, 1 Woche von bruderb. Grund: Rechtschreibkorrektur
    • Dieses Thema wurde geändert vor 1 Monat, 1 Woche von threadi. Grund: Textformatierung
Ansicht von 7 Antworten – 1 bis 7 (von insgesamt 7)
  • Moderator threadi

    (@threadi)

    Die zunächst genannten PHP-Warnungen (keine Fehler) haben mit den Verbindungsproblemen nichts zu tun. Entscheidender ist, dass dein Server offenbar nicht „nach draußen“ telefonieren kann. Sprich: WordPress versucht von diesem aus eine Anfrage nach außerhalb von deinem Netzwerk zu machen und bekommt keine Antwort.

    Angesichts des Aufbaus bei deinem Netzwerk würde ich dir empfehlen dir genau das näher anzuschauen. Praktisch müsstest Du ausgehend von dem Linux-System einen Ping auf z.B. google.com machen können. Wenn schon das scheitert, stimmt etwas an der Netzwerkkonfiguration nicht. Wenn ein Ping geht, aber kein „curl https://www.google.com“ dann sperrt irgendetwas deinen Port 443 (und vermutlich auch 80) für ausgehende Anfragen. Das wird oft durch eine Firewall gemacht. Was auch immer es ist, WordPress ist hierfür nicht verantwortlich und kann es auch nicht umgehen. Wir können dir hier um Forum daher nur bedingt dabei helfen.

    Moderator Torsten Landsiedel

    (@zodiac1978)

    Dein Server kann sich weder mit sich selbst noch mit WordPress.org verbinden. Die Frage ist also, wieso. Apache auf Debian mit ReverseProxy ist schon eine Sache für Fortgeschrittene, wenn du das selber einrichten möchtest. Ich vermute mal du nutzt Nginx neben Apache? Offensichtlich ist hier irgendwas falsch konfiguriert worden.

    Wie sieht deine Konfig aus? Welche Anpassungen in der wp-config.php hast du vorgenommen?

    Thread-Starter bruderb

    (@bruderb)

    Hallo Threadi und Torsten,

    vielen Dank für Eure Hinweise.

    Tja, tatsächlich habe ich etwas gelernt – etwas peinlich….. Offensichtlich benutzt WP nicht die Proxy-Settings des Systems, sondern will selbst über die Gegenwart eines Proxys informiert werden. Was ich verschwiegen hatte: Der WP-Server steht nicht nur hinter einen ReverseProxy, sondern auch hinter einem ForwardProxy. Nun gibt es die entsprechenden Einträge in der wp-config.php und das WP erreicht jetzt auch die Internetdienste.

    Gruß,

    B.

    • Diese Antwort wurde geändert vor 1 Monat, 1 Woche von bruderb.
    Moderator threadi

    (@threadi)

    Schön, dass es funktioniert. Ich hab das Topic daher für dich mal auf gelöst gesetzt.

    Thread-Starter bruderb

    (@bruderb)

    Hallo Threadi,

    hallo zusammen,

    die Sache ist leider noch nicht ganz gelöst: Zwar kann WP jetzt Dienste im Internet erreichen, nicht aber sich selbst. In der site-health.php steht weiterhin:

    +++++++++

    Das REST-API ist eine Möglichkeit, wie WordPress und andere Anwendungen mit dem Server kommunizieren. Der Bildschirm des Block-Editors beispielsweise stützt sich auf die REST-API, um deine Beiträge und Seiten anzuzeigen und zu speichern.

    Beim Testen des REST-API ist ein Fehler aufgetreten:

    REST-API-Endpunkt: https://<domain&gt;.de/wp-json/wp/v2/types/post?context=edit
    REST-API-Antwort: (http_request_failed) cURL error 28: Connection timed out after 10001 milliseconds

    +++++++++

    Der DNS des Systems zeit auf die öffentliche IP. Von dort kann eine ssl-Anfrage beantwortet werden.

    Nach der jüngsten Erfahrung vermute ich, dass WP erkennt, dass es sich selbst anfragt. Localhost kann aber keine ssl-verschlüsselten Anfrage beantworten. Die Loopback-Anfrage müsste also entweder den System-DNS benutzen oder ’nur‘ http anfragen….

    Ich vermute diese Magie in den folgenden Zeilen der wp-config (da übrigens auch der jüngst gemachte Proxy-Eintrag):

    // fuer ssl hinter ReverseProxy, 21.3.2018, Boris
    define('.COOKIE_DOMAIN.', '<domain>');
    define('.SITECOOKIEPATH.', '.');

    if(isset($_SERVER['HTTP_X_FORWARDED_FOR'])) {
    $list = explode(',',$_SERVER['HTTP_X_FORWARDED_FOR']);
    $_SERVER['REMOTE_ADDR'] = $list[0];
    }
    define( 'WP_HOME', 'https://<domain>' );
    define( 'WP_SITEURL', 'https://<domain>' );
    $_SERVER['HTTP_HOST'] = '<domain>';
    $_SERVER['REMOTE_ADDR'] = 'https://<domain>';
    $_SERVER[ 'SERVER_ADDR' ] = '<domain>';

    if ($_SERVER['HTTP_X_FORWARDED_PROTO'] == 'https')
    $_SERVER['HTTPS']='on';

    define('ENABLE_CACHE', false);

    // fuer Anfragen ins Internet (BAn, 2.11.2024):
    define('WP_PROXY_HOST', '192.168.1.3');
    define('WP_PROXY_PORT', '3128');
    //define('WP_PROXY_USERNAME', '');
    //define('WP_PROXY_PASSWORD', '');
    //define('WP_PROXY_BYPASS_HOSTS', 'localhost,127.0.0.0/8,10.0.0.0/8,172.16.0.0/12,192.168.0.0/16');

    Dank und Grüße,

    B.

    • Diese Antwort wurde geändert vor 1 Monat von bruderb.
    • Diese Antwort wurde geändert vor 1 Monat von bruderb.
    Moderator threadi

    (@threadi)

    Das ist eher eine Frage der DNS-Auflösung der Domain am eigenen Server. Wenn Du von dem Server aus einen Ping dahin machst, zeigt es auf die richtige IP? Allerdings hast Du mit der Proxy-Sache schon eine sehr spezielle Einrichtung, die kaum von jemand anderem genutzt wird, weshalb eine Hilfe – wenn es nicht das DNS ist – hier schwer fällt.

    Thread-Starter bruderb

    (@bruderb)

    Hallo threadi,

    hallo Forum,

    welches ist wohl die ‚richtige‘ IP? Da gibt es ja mehrere Möglichkeiten: 127.0.0.1, die öffentliche IP oder die IP meines Reverse Proxy? Aktuell löst der DNS den Namen auf die öffentliche IP auf. Das ist zwar ein ‚Umweg‘, aber nicht per se falsch.

    Grüße

Ansicht von 7 Antworten – 1 bis 7 (von insgesamt 7)