从其他主机访问ddev Web容器

时间:2018-11-19 08:49:26

标签: ddev

我想从另一台主机访问ddev Web容器。我该如何实现?

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

2 个答案:

答案 0 :(得分:2)

https://medium.com/botfuel/how-to-expose-a-local-development-server-to-the-internet-c31532d741cc上有很好的技术摘要,我看到许多其他的-建议:

  • ngrok(请参阅现有的ddev issue
  • 本地隧道
  • 只需使用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(仅暴露在计算机上的另一个端口上),请使用any of these technqiues。我将在macOS(简装socat)上使用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隧道将您的项目代理给其他人在互联网上使用:

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

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

  • 更改防火墙配置以启用对远程主机上该端口的访问
  • 在主机的sshd配置中启用GatewayPorts yes

答案 1 :(得分:0)

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