PHP4-FPM을 실행하는 PHP 서버가 있으며 포트 번호 7000
의 nginx를 통해 fastcgi와 함께 제공됩니다. 이 응용 프로그램은 도킹되어 실행중인 컨테이너로 실행 중입니다. my_api.nginx 역방향 프록시의 PHP 업스트림에서 XDebug를 어떻게 사용할 수 있습니까?
my_api
고정 표시기 용기 포트 80
와의 my_api
애플리케이션 (및 기타)을 노출하는 업스트림 사용 리버스 프록시 Nginx의 역할을 다른 용기 통해서뿐만 아니라 직접 (의하면 정신에 대한) 포트 7000
통해 연결될 수있다 443
(80
은 SSL로 리디렉션 됨)을 통해 해당 위치 아래의 proxy_pass
지시.
나는 파일이 http://localhost:7000에서 제공 포트에 9000
직접에 dbgp를 사용하여 XDebug가 세션을 시작하면 내가 디버깅 세션이 올바르게 확립 볼 수 있고 내가 디버깅 할 수 있습니다.
그러나 nginx 역방향 프록시가 제공하는 URL에 대해 XDebug 세션을 시작하려고하면 예 : https://localhost/my-api, 디버그 세션이 시작된 것처럼 보이지 않거나 최소한 IDE가 연결을 만들지 않습니다 (IDE에서 중단 점이 발생하지 않음).
nginx 리버스 프록시를 통해 만들어진 요청에 대해 어떻게 XDebug 세션을 설정할 수 있습니까?
고정 표시기-compose.yml :
version: "2"
services:
api:
build: <path_to_dockerfile>
ports:
- 7000:7000
#- 9000:9000 # may be uncommented for direct debugging access
nginx_proxy:
build: <path_to_dockerfile>
links:
...
- api:api
ports:
- 80:80
- 443:443
xdebug.ini
이 질문의 목적을 위해은 아래에있는 내 docker-compose.yml
구성 및 xdebug.ini
의 (관련) 샘플입니다
zend_extension=xdebug.so
xdebug.remote_enable=true
xdebug.remote_connect_back=1
xdebug.remote_port=9000
xdebug.remote_handler=dbgp
xdebug.remote_autostart=0
NB : 나는이 두 가지 구성을 시도해 보았습니다. dbgpproxy을 실행중인 Docker 컨테이너를 시작하는 것을 포함하여이 작업을 시도했지만 리버스 프록시를 통과하는 요청을 디버깅 할 수있는 것은 아무것도없는 것처럼 보입니다. 이러한 시도를 위해 사용했던 구성이 잘못되어도 가능합니다.
나는 내 문제가 무엇인지에 대한 몇 가지 이론을 가지고 있는데, 그 중에는 remote_connect_back
구성 속성을 통해 XDebug에 전달되는 역방향 프록시의 IP 주소라는 의혹이 있습니다.
nginx 프록시를 통해 서버로 보낸 요청과 함께 작동하도록 XDebug를 올바르게 구성하는 방법에 대한 도움이나 통찰력을 업스트림 서버로 전달하면 크게 감사하겠습니다!
도움이 될만한 정보가 있으면 자세히 알려 드릴 수 있습니다.
xdebug.remote_connect_back = '1'- '는'0 = 있도록 적절한 호스트를 사용/IP in'xdebug.remote_host' – LazyOne
또한 - xdebug 로그를 활성화하고 그것이 무엇을 말해야하는지보십시오 - IP가 무엇인지 보여줍니다 : por 연결을 시도하고 거기서 무슨 일이 일어나고 있는지 (디버그 세션이 수락되면) 시도합니다. – LazyOne