Ich habe einen PHP-Server, der PHP-FPM ausführt, der mit fastcgi bis nginx auf Port 7000
geliefert wird. Diese Anwendung wurde gedockt und wird als laufender Container ausgeführt, z. mein_api .
Der Andock-Container my_api
kann über den Port 7000
(für die Überprüfung der Integrität) direkt mit einem anderen Container verbunden werden, der als Nginx-Reverse-Proxy fungiert und Upstream verwendet, um die my_api
-Anwendung (und andere) verfügbar zu machen ) an den Ports 80
und 443
(Port 80
leitet SSL um) über proxy_pass
directs an den entsprechenden Stellen.
Wenn ich eine XDebug-Sitzung mit dbgp auf dem Port 9000
direkt mit einer Datei starte, die von Ссылка geliefert wird, kann ich das tun sehe die Debugging-Sitzung korrekt eingerichtet und ich kann debuggen.
Wenn ich jedoch versuche, die XDebug-Sitzung mit der URL zu starten, die vom nginx-Reverse-Proxy bedient wird, z. Ссылка , die Debug-Sitzung scheint nicht gestartet zu werden oder sie erstellt die Verbindung nicht richtig (in meiner IDE werden keine Haltepunkte gefunden, usw.).
Wie kann ich eine XDebug-Sitzung für Anfragen einrichten, die über den nginx-Reverse-Proxy vorgenommen werden?
Für diese Frage ist unten ein (relevantes) Beispiel meiner docker-compose.yml
-Konfiguration und xdebug.ini
:
docker-compose.yml :
%Vor%xdebug.ini
%Vor%Hinweis: Ich habe ein paar verschiedene Konfigurationen ausprobiert, um zu versuchen, dies zum Laufen zu bringen. Dazu gehört auch das Starten eines Docker-Containers mit einem dbgpproxy , aber nichts scheint mir zu erlauben, Anfragen zu debuggen, die den Reverse-Proxy passieren. Es ist jedoch sehr wahrscheinlich, dass die Konfiguration, die ich für diese Versuche verwendet habe, einfach falsch war.
Ich habe ein paar Theorien zu meinen Problemen, darunter der Verdacht, dass es die IP-Adresse des Reverse-Proxy ist, die XDebug über die Konfigurationseigenschaft remote_connect_back
mitgeteilt wird.
Jede Hilfe oder ein Einblick in die richtige Konfiguration von XDebug für die Arbeit mit Anfragen, die über nginx-Proxy-Pässe an einen Server gestellt werden, wäre sehr zu begrüßen!
Ich kann weitere Details angeben, wenn es hilfreich wäre!
So habe ich PHP Storm dazu gebracht, eine Verbindung zu einer dockerisierten php-fpm / nginx-Anwendung herzustellen:
Injizieren Sie die Remote-Host-IP in den Container. Setzen Sie in Ihrem Host die Variable:
%Vor%Ich bin nicht so vertraut mit Docker-komponieren. Ich verwende ein Kubernetes-Manifest, aber ich bin mir sicher, dass es eine Möglichkeit gibt, Umgebungsvariablen zu injizieren.
in xdebug.ini:
%Vor% Jetzt sollten Sie in der Lage sein, Ihren xdebug Client so einzurichten, dass er auf xdebug.remote_port
für Debug-Verbindungen wartet. Sie müssen auch einen Debug-Server in PHP Storm oder der von Ihnen verwendeten IDE einrichten, die auf Ссылка (oder welchen Port Sie auch verweist) Port-Weiterleitung des Nginx-Containers an).
So sieht mein Setup aus. Ich verwende PHP Storm, aber ich bin mir sicher, dass Sie dies an andere xdebug Clients anpassen können.
xdebug.ini:
%Vor%Referenz: Ссылка