我不确定这是否可能,但我可以通过网络服务器显示 Linux 命令的标准输出吗?
我想要运行的命令是echo 'status' | nc localhost 4730
返回一个包含 gearman 作业服务器状态的字符串。
$echo 'status' | nc localhost 4730
function1 0 0 0
function2 0 0 1
我的服务器运行的是 nginx。我想打开一个 URL,例如http://domain.tld/gearman-status并且它应该通过运行该命令返回当前状态。
我应该在 nginx 的位置块中放置什么来做到这一点?
location /gearman-status {
?
}
谢谢
答案1
nginx
缺乏 CGI 支持,因此无法直接执行任何脚本。您需要设置 FastCGI 服务器并通过在指令中nginx
使用来调用它。nginx wiki 中有此类 FastCGI 包装器的示例 - 请参阅此fastcgi_pass
location
关联。
答案2
您只需编写一个小型 PHP 或 perl 文件并将其放在所需路径中即可。这个小文件将执行您想要的脚本或命令并打印输出。您可以使用反引号“command”来执行此操作。