【问题标题】:How do I communicate to a LAMP's network from its own hosted website?如何从 LAMP 自己的托管网站与 LAMP 网络进行通信?
【发布时间】:2021-06-29 14:15:19
【问题描述】:

给定两台服务器 A 和 B,其中 A 通过公共 URL 暴露在互联网上,而 B 与 A 位于同一网络上;如何让服务器 A 向 B 发送操作?

一个非常简单的例子是让 A 醒来 B。 现在,我有一个基本的 HTML 页面,其中有一个按钮可以触发对具有 shell_exec('wakeonlan ...') 的 PHP 文件的 AJAX 请求,另一个链接到 div 的 AJAX-to-PHP 每 5 秒更新一次以告诉我服务器是否B 打开或关闭。
我在这里有点盲目,因为我无法找到有关这种设置的信息,显然我想将我的功能扩展到简单的网络唤醒之外。

这可以通过 LAMP 服务器实现吗,还是我需要更复杂的东西?

【问题讨论】:

  • 您还想准确发送哪些其他操作?如果服务器 B 被 wakeonlan 命令唤醒,那么一旦它完全启动并运行,服务器 A 就可以通过 B 提供的任何服务和协议向它发送命令。你将如何做到这一点取决于你想要做什么。
  • @ADyson 几乎任何东西;如果 B 是另一个 Linux 系统,而 C 是 Windows 系统,我希望能够查询服务器、执行程序或从 C 获取文件……对不起,我要求的内容太宽泛了吗?例如,我想知道如何与 A 本地的服务器进行通信,但不依赖于 shell_exec。我可以依赖哪些服务?
  • 那么 HTTP 可能会有意义 - 应用您已经在 A 中使用的相同模式。即当前您向 A 发出 http 请求,然后运行 ​​shell_exec。以同样的方式,A 可以向 B 发出 HTTP 请求,然后 B 可以运行 SQL 查询或运行 shell 命令或任何您想要的。所以如果 B 上有一个网络服务器,你可以这样做。我想还有十几种其他方法可以实现它,但 HTTP 是你已经熟悉的现成方法。
  • @ADyson 好的,但是我如何使用 HTTP 从 A 请求到 B?如果我在发出请求时使用 B 的本地 IP 地址,那么位于 A 和 B 网络之外的用户的机器是否会尝试对该 IP 执行该操作?
  • 否,因为您使用 PHP 从服务器 A 发出请求。服务器发出请求,而不是浏览器。将服务器 A 视为中继服务器或代理服务器——你从浏览器向服务器 A 发出命令,然后服务器 A 向服务器 B 发出命令——就像你现在使用 Wake on LAN 命令所做的那样,除了在 A 和 B 之间使用 http 而不是唤醒协议

标签: php html jquery apache lamp


【解决方案1】:

@ADyson 的 cmets 让我明白了我对 HTTP 请求的困惑。

总之,由于不是本地浏览器在网站上执行操作(我以为是),我可以使用 HTTP 与其他服务器进行通信,而无需依赖带有 @987654321 的 AJAX-to-PHP @ 触发 wakeonlan 命令,这听起来太复杂了,无法执行我想做的事情。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-02-18
    • 1970-01-01
    • 2014-10-26
    • 1970-01-01
    • 2017-06-17
    • 2011-11-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多