У меня есть PHP-сервер, работающий через PHP-FPM, который обслуживается с fastcgi через nginx на порту 7000
. Это приложение было задокументировано и работает как работающий контейнер, например. my_api.Как я могу использовать XDebug с PHP вверх позади обратного прокси-сервера nginx?
Контейнер my_api
докера может быть подключен напрямую через порт 7000
(для здравого смысла проверки), а также через другой контейнер, который действует как Nginx обратного прокси-сервер, который использует выше по потоку, чтобы выставить my_api
приложение (и другие) на порты 80
и 443
(порт 80
перенаправляет на SSL) через proxy_pass
директивы в соответствующих местах.
Если я запустить XDebug сессии, используя DBGp порта 9000
непосредственно на файл подается с http://localhost:7000 я могу видеть сеанс отладки установлен правильно, и я могу отладить.
Однако, если я попытаюсь запустить сеанс XDebug против URL-адреса, обслуживаемого обратным прокси-сервером nginx, например. https://localhost/my-api, сеанс отладки не запускается или, по крайней мере, он не создает соединение должным образом (в моей среде IDE отсутствуют точки останова).
Как установить сеанс XDebug для запросов, сделанных через обратный прокси nginx?
Для целей данного вопроса, ниже (значение) образец моей docker-compose.yml
конфигурации и xdebug.ini
:
докер-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
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: Я попробовал несколько различных конфигураций, чтобы попытаться получить эту работу, в том числе запуск контейнера Docker с использованием dbgpproxy, но ничто не позволяет мне отлаживать запросы, которые проходят через обратный прокси. Это очень возможно, хотя конфигурация, которую я использовал для этих попыток, была просто неправильной.
У меня есть несколько теорий о моих проблемах, среди которых подозрение, что это IP-адрес обратного прокси, который передается XDebug через свойство конфигурации remote_connect_back
.
Любая помощь или понимание того, как правильно настроить XDebug для работы с запросами, которые выполняются на сервере через прокси-сервер nginx, будет высоко оценен!
Я могу предоставить более подробную информацию, если было бы полезно!
'xdebug.remote_connect_back = 1' - сделать = '0' и использовать надлежащий хост/IP в 'xdebug.remote_host' – LazyOne
Также - включите протокол xdebug и посмотрите, что он должен будет сказать - он покажет, какой IP: por t он пытается подключиться и (если сеанс отладки принят), что там происходит. – LazyOne