2017-03-19 3 views
0

Mit einer Cloud-Lösung sind meine Server hinter einer Firewall und NAT mit privaten IP-Klassen.woocommerce feuert keine Webhooks zwischen zwei natted Servern

  • mein Geschäft Website: shop.example.com (192.168.1.10)
  • meiner Website: www.example.com (192.168.1.20)

erstelle ich eine Webhook, dass ein Anruf URL der Website jedes Mal ein Artikel in den Warenkorb gelegt wird: webhook configuration

Aber Webhook gebrannt nie

Antwort

0

Nachdem alle Unterlagen gelesen hatte ich fo und (wenige Seiten) Ich fand die Wordpress ermöglicht selbst nur eine HTTP-Anforderung zu platzieren und öffentliche IP-Adressen, mit wp_http_validate_url, kann sein Verhalten überschreibt durch einen Filter sein: http_request_host_is_external

In functions.php ich das hinzufügen Überschreibung Haken:

add_filter('http_request_host_is_external','allowed_http_request_hosts_local', 10, 2); 

und die Implementierung der Funktion mit der Adresse meines Web-Servers:

function allowed_http_request_hosts_local($is_external, $host) { 
    $hosts_white_list=[]; 
    $hosts_white_list[]="www.example.com"; 
    if (! $is_external && in_array($host,$hosts_white_list)) 
     $is_external = true; 
     return $is_external; 
} 

Wordp Ress plant die Webhooks in der Cron-Tabelle, so dass sie feuern, wenn WP sich unter shop.example.com/wp_cron.php anruft. Viele Firewall erlauben nicht, die öffentliche IP-Adresse hinter der Firewall anzurufen, also habe ich die Konfiguration beendet Hinzufügen die private Adresse des Ladens zu seiner /etc/hosts:

192.168.1.10 shop.example.com 

Und alle arbeiten gut!

Verwandte Themen