我有一台服务器 (srv1),它接收对“test.srv1”的所有请求。
我希望 srv1 能够在必要时唤醒另一台服务器 (srv2),然后将请求重定向到 srv2。
我曾考虑配置 nginx 来执行此操作,但如果有人有更好的主意就好了。
server {
server_name test.srv1;
location / {
if (!-e $is_srv2_on) {
# execute wol command
echo_sleep 2; # wait 2 seconds
}
return 301 $scheme://test.srv2;
}
}
我不知道如何执行 bash 命令。我查看了 njs 模块,但没有成功。
答案1
正如 Michael Hampton 所提到的,让另一台服务器保持运行会更加可靠。WOL 充其量也是一种挑剔的野兽。话虽如此,如果您决心执行这个想法,这里有一个解决方案。
Vanilla NGINX 无法完成您想要执行的操作,但是,如果您使用 Openresty fork,那么这很简单:
location / {
rewrite_by_lua_block {
os.execute("wakeonlan MAC-Address-Here")
ngx.sleep(2)
}
return 301 $scheme://test.srv2;
}