题 nginx:我可以在特定网址上显示shell命令的输出吗?


我不确定这是否可能,但我可以通过网络服务器显示linux命令的标准输出吗?

我想要运行的命令是 echo 'status' | nc localhost 4730 返回一个包含gearman作业服务器状态的字符串。

$echo 'status' | nc localhost 4730
function1      0       0       0
function2      0       0       1

我的服务器正在运行nginx。我想打开一个像这样的网址 HTTP://domain.tld/gearman-status 它应该通过运行该命令返回当前状态。

我应该在nginx的位置块中放置什么呢?

location /gearman-status {
  ?
}

谢谢


6
2017-07-03 11:05






答案:


nginx 缺乏CGI支持,因此无法直接执行任何脚本。您需要设置FastCGI服务器并从中调用它 nginx 通过使用 fastcgi_pass 在你的 location 指示。在nginx wiki中有这样的FastCGI包装器的例子 - 看到这个 链接


4
2017-07-03 13:02



谢谢Alex。对于这个简单的要求,FastCGI看起来似乎有些过分,但是对于这个案例,在wiki上给出了perl脚本,我会继续使用它。 - Mridul Kashatria
链接不再有效(404) - anneb


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


1
2017-07-03 11:41