Sea*_*inn 9 php xdebug nginx docker
我有一个运行PHP-FPM的PHP服务器,它通过端口上的nginx与fastcgi一起提供7000.此应用程序已停靠,并作为正在运行的容器运行,例如my_api.
的my_api搬运工容器可以连接到直接经由端口7000(对于健全检查),以及通过其充当nginx的反向使用上行流以暴露代理另一个容器my_api上的端口的应用程序(和其它)80和443(端口80重定向到SSL)通过proxy_pass指令在适当的位置.
如果我在端口上使用dbgp9000直接针对从http:// localhost:7000提供的文件启动XDebug会话,我可以看到调试会话已正确建立,我可以调试.
但是,如果我尝试针对nginx反向代理服务的URL启动XDebug会话,例如https:// localhost/my-api,则调试会话似乎没有启动,或者至少它没有正确创建连接(我的IDE中没有出现断点等).
如何为通过nginx反向代理发出的请求建立XDebug会话?
出于此问题的目的,下面是我的docker-compose.yml配置的(相关)示例,并且xdebug.ini:
docker-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
Run Code Online (Sandbox Code Playgroud)
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
Run Code Online (Sandbox Code Playgroud)
注意:我尝试了几种不同的配置来尝试使其工作,包括启动运行dbgpproxy的Docker容器,但似乎没有任何东西允许我调试通过反向代理的请求.虽然我用于这些尝试的配置是错误的,但是很有可能.
我有一些关于我的问题可能是什么的理论,其中包括怀疑反向代理的IP地址是通过remote_connect_back配置属性传递给XDebug的.
任何帮助或洞察如何正确配置XDebug以处理通过nginx代理服务器发送到上游服务器的请求将非常感谢!
如果它有用,我可以提供进一步的细节!
以下是我如何让 PHP Storm 连接到 dockerized php-fpm / nginx 应用程序:
将远程主机IP注入到容器中。在您的主机中,设置变量:
XDEBUG_HOST=$(ipconfig getifaddr en0)
Run Code Online (Sandbox Code Playgroud)
我对 docker-compose 不太熟悉。我正在使用 Kubernetes 清单,但我确信有一种方法可以注入环境变量。
在 xdebug.ini 中:
xdebug.remote_host=${XDEBUG_HOST}
Run Code Online (Sandbox Code Playgroud)
现在您应该能够设置 xdebug 客户端来侦听xdebug.remote_port调试连接。您还必须在 PHP Storm 或您使用的任何 IDE 中设置一个指向http://127.0.0.1:8080(或您将 nginx 容器端口转发到的任何端口)的调试服务器。
这是我的设置。我正在使用 PHP Storm,但我确信您可以将其应用于其他 xdebug 客户端。
xdebug.ini:
zend_extension=xdebug.so
xdebug.remote_enable=1
xdebug.remote_port=10000
xdebug.remote_autostart=1
xdebug.idekey=www-data
xdebug.remote_host=${XDEBUG_HOST}
Run Code Online (Sandbox Code Playgroud)
参考: https: //shippingdocker.com/xdebug/
| 归档时间: |
|
| 查看次数: |
2014 次 |
| 最近记录: |