nginx:我可以显示特定 url 上的 shell 命令的输出吗?

nginx:我可以显示特定 url 上的 shell 命令的输出吗?

我不确定这是否可能,但我可以通过网络服务器显示 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_passlocation关联

答案2

您只需编写一个小型 PHP 或 perl 文件并将其放在所需路径中即可。这个小文件将执行您想要的脚本或命令并打印输出。您可以使用反引号“command”来执行此操作。

相关内容