从其他主机访问 ddev web 容器
Access ddev web container from other hosts
我想从另一台主机访问 ddev 网络容器。我怎样才能做到这一点?
例如:ddev在主机A上运行,我想从主机B上访问网页
https://medium.com/botfuel/how-to-expose-a-local-development-server-to-the-internet-c31532d741cc 上有一个很好的技术总结,我看到了很多其他的 - 它建议:
- ngrok(查看现有 ddev issue)
- 本地隧道
- 只是使用 ssh 隧道进行代理。
所以你所说的至少有两种变体:
- 只是代理到主机上的一个公开端口,供本地网络上的另一台机器访问。
- 将您的本地开发环境代理到 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)。如果你能做到这一点,你就不必 fiddle 在你要访问的主机上伪造主机名。
因此对于选项 1(只是在您机器上的另一个端口上公开),请使用 any of these technqiues。我将在 macOS 上使用 socat 方法(brew install socat)。
socat tcp-listen:8889,reuseaddr,fork tcp:localhost:32827
其中 32827 是 ddev 列出的端口,描述为本地主机访问,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。请注意,您可能需要
- 更改防火墙配置以启用对远程主机上该端口的访问
- 在主机的 sshd 配置中启用
GatewayPorts yes
。
更新:使用 ddev 1.9.0 及更高版本提供了一个 ddev share
命令,这使得这非常容易。
我想从另一台主机访问 ddev 网络容器。我怎样才能做到这一点?
例如:ddev在主机A上运行,我想从主机B上访问网页
https://medium.com/botfuel/how-to-expose-a-local-development-server-to-the-internet-c31532d741cc 上有一个很好的技术总结,我看到了很多其他的 - 它建议:
- ngrok(查看现有 ddev issue)
- 本地隧道
- 只是使用 ssh 隧道进行代理。
所以你所说的至少有两种变体:
- 只是代理到主机上的一个公开端口,供本地网络上的另一台机器访问。
- 将您的本地开发环境代理到 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)。如果你能做到这一点,你就不必 fiddle 在你要访问的主机上伪造主机名。
因此对于选项 1(只是在您机器上的另一个端口上公开),请使用 any of these technqiues。我将在 macOS 上使用 socat 方法(brew install socat)。
socat tcp-listen:8889,reuseaddr,fork tcp:localhost:32827
其中 32827 是 ddev 列出的端口,描述为本地主机访问,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。请注意,您可能需要
- 更改防火墙配置以启用对远程主机上该端口的访问
- 在主机的 sshd 配置中启用
GatewayPorts yes
。
更新:使用 ddev 1.9.0 及更高版本提供了一个 ddev share
命令,这使得这非常容易。