如何在收到来自 LAN 的 HTTP 请求时唤醒我的 Ubuntu 服务器?

如何在收到来自 LAN 的 HTTP 请求时唤醒我的 Ubuntu 服务器?

我有一台运行 Apache2 服务器的 Ubuntu 22.04.1 网络服务器,托管 2 个站点 [Django 网站和其他文件托管站点]。我想要实现的目标是:将服务器设置为在不使用时一直处于睡眠状态。当它收到 HTTP 请求时,它会唤醒 20 分钟。(让客户有时间使用网站)然后进入睡眠状态。

我已经处理了第二部分,将 ubuntu 自动睡眠定时器设置为 20 分钟。并且它起作用了(它在唤醒 20 分钟后进入睡眠状态)

我的问题出在第一部分。经过几天的研究和尝试,我找不到让服务器仅在 HTTP 请求时唤醒的方法。我尝试了 ethtool 的 wol,所有“pumbg”选项,但服务器在随机时间唤醒而不向服务器发送任何请求。

答案1

这是不可能的。HTTP 请求由位于您的 Ubuntu 服务器内的 Web 服务器处理。如果您的 Ubuntu 服务器虚拟机已关闭,则入站流量将永远不会到达位于其中的 Web 服务器。

最好的情况是,您最好使用防火墙内的 WOL(局域网唤醒)技术来发送魔包以重新打开虚拟机,并确保您的 Web 服务器设置为在启动时自动启动。

答案2

我不确定“仅 http 请求”的意思是否是:

a) 除了启动服务器所需的 http 请求之外,无需执行其他操作

b) 只允许 http 请求开启此功能,不允许其他类型的请求。

在前一种情况 (a) 中,可以使用服务器上的单播设置进行局域网唤醒。这确实会通过 http 请求将其唤醒,事实上,它还会通过针对该特定机器的任何请求(例如 ping)唤醒服务器。

相关内容