Lando 无法从我系统上的非 Lando 应用程序访问 URL
Posted
技术标签:
【中文标题】Lando 无法从我系统上的非 Lando 应用程序访问 URL【英文标题】:Lando has trouble accessing a URL from a non-Lando app on my system 【发布时间】:2020-11-06 16:20:54 【问题描述】:我的公司有在我系统上的 Docker 中运行的软件,但没有使用 Lando。该软件通过 URL 提供一些数据: http://local.relay.cool:8081/clicks-bff/api/ads/
我可以在匿名浏览器中点击这个 URL,从终端 cURL,然后通过 Postman 加载它,它会返回预期的数据。
我正在使用 Wordpress 配方运行 Lando,并且正在开发一个插件。这个插件可以点击外部 URL 并检索数据,我已经尝试了几个不同的来确认。
但是,当 Lando 尝试访问上面列出的 URL 时,我得到一个 WP_Error:
object(WP_Error)#1269 (2) ["errors"]=> array(1) ["http_request_failed"]=> array(1) [0]=> string(58) "cURL error 28: Resolving timed out after 5514 milliseconds" ["error_data"]=> array(0)
这是 .lando.yaml 配置块:
name: my app name
recipe: wordpress
config:
webroot: wordpress
我是否缺少某些配置选项来允许 Lando 访问我机器上的另一个 URL?
【问题讨论】:
您能检查一下Lando 中的curl 试图到达的地址吗?似乎 DNS 无法解析该名称。 尝试将local.relay.cool
替换为您主机的IP 地址,但不要使用localhost
或127.0.0.1
。在本地网络中使用主机的 IP。
你的lando版本是什么?
您可以安装查询监视器插件并在显示错误的管理页面中检查 HTTP API 调用的状态。 en-ca.wordpress.org/plugins/query-monitor
【参考方案1】:
根据您的问题,听起来您尝试访问的 URL 正在您机器上的非 Lando docker 容器上运行。
这意味着从您的 Lando 实例到服务的路由将与往常略有不同。您应该能够以与访问 localhost
端点相同的方式完成此操作。正如 GitHub 上的 this Lando issue 中所述,您必须使用 $LANDO_HOST_IP
环境变量来路由到本地服务。
由于您的容器都在轻型 hyper-v 实例中运行,因此您需要知道主机的主机名或 IP。通常我们将 $LANDO_HOST_IP 设置为您的计算机。 . .
所以尝试这样的事情(假设您使用的是 php 的 curl
):
curl_init('http://' . $_ENV["LANDO_HOST_IP"] . ':8081/clicks-bff/api/ads/');
【讨论】:
以上是关于Lando 无法从我系统上的非 Lando 应用程序访问 URL的主要内容,如果未能解决你的问题,请参考以下文章