web-dev-qa-db-ja.com

nginx:特定のURLでシェルコマンドの出力を表示できますか?

これが可能かどうかはわかりませんが、Webサーバーを介してLinuxコマンドのstdoutを表示できますか?

実行したいコマンドはecho 'status' | nc localhost 4730ギアマンジョブサーバーのステータスを含む文字列を返します。

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

私のサーバーはnginxを実行しています。 http://domain.tld/gearman-status のようなURLを開きたいのですが、そのコマンドを実行すると現在のステータスが返されます。

それを行うには、nginxのロケーションブロックに何を入れる必要がありますか?

location /gearman-status {
  ?
}

ありがとう

7

nginxにはCGIサポートがないため、スクリプトを直接実行することはできません。 FastCGIサーバーをセットアップし、nginxディレクティブでfastcgi_passを使用して、locationから呼び出す必要があります。 nginx wikiにそのようなFastCGIラッパーの例があります-これを参照してください リンク

4
AlexD

小さなPHPまたはPerlファイルを記述して、必要なパスに配置するだけです。この小さなファイルは、必要なスクリプトまたはコマンドを実行し、出力を出力します。backquotes`コマンドを使用できます。 `これを行うには。

1
Khaled