0

我想从另一台主机访问 ddev Web 容器。我怎样才能做到这一点?

例如:ddev 在主机 A 上运行,我想从主机 B 访问网页。

4

2 回答 2

3

https://medium.com/botfuel/how-to-expose-a-local-development-server-to-the-internet-c31532d741cc上有一个很好的技术总结,我看到了其他一些技术 - 它建议:

  • ngrok(参见现有的ddev 问题
  • 本地隧道
  • 只需使用 ssh 隧道进行代理。

因此,您所谈论的内容至少有两种变体:

  1. 只需代理到主机上的公开端口,以供本地网络上的另一台机器访问。
  2. 将您的本地开发环境代理到 Internet 上的主机,以便从任何地方访问。

对于任何一种方法,我们都需要弄清楚要代理的端口。如果你只能使用 http,我会代理 localhost 端口(它直接进入 Web 容器,而不关心 URL 中的主机名是什么)。因此,如果ddev describe显示http://d7git.ddev.local:8080, https://d7git.ddev.local:8443, http://127.0.0.1:32827,请使用 127.0.0.1 端口(在本例中为 32827)。如果你能做到这一点,你就不必在你要访问它的主机上伪造主机名。

因此,对于选项 1(仅在您机器上的另一个端口上公开),请使用这些技术中的任何一个。我将在 macOS 上使用 socat 方法(brew install socat)。

socat tcp-listen:8889,reuseaddr,fork tcp:localhost:32827

其中 32827 是 ddev 列出的端口,描述为 localhost 访问,而 8889 是您要向其他人公开的端口。然后找出您的本地网络 IP 地址(使用 ifconfig 或其他技术),其他人可以使用它访问您的 ddev 项目。例如,我今天的设置是http://10.150.150.87:32827/

对于选项 2,通过 ssh 隧道代理您的项目以供其他人在 Internet 上使用:

ssh -R :9101:localhost:32827 user@host.example.com

这会将您的本地端口 32827(检查您自己的 ddev 描述)隧道到远程 host.example.com 上的端口 9101。请注意,您可能必须

  • 更改防火墙配置以启用对远程主机上该端口的访问
  • GatewayPorts yes在主机的 sshd 配置中启用。
于 2018-11-19T18:33:15.823 回答
0

更新:使用 ddev 1.9.0 及更高版本提供了一个ddev share命令,使这变得非常容易。

于 2019-09-06T07:19:31.400 回答