Pregunta nginx: ¿Puedo mostrar la salida de un comando de shell en una url específica?


No estoy seguro de si esto es posible, pero ¿puedo mostrar la salida estándar de un comando de Linux a través del servidor web?

El comando que quiero ejecutar es echo 'status' | nc localhost 4730 que devuelve una cadena con el estado del servidor de trabajo gearman.

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

Mi servidor está ejecutando nginx. Quiero abrir una URL como http: //domain.tld/gearman-status y debería devolver el estado actual ejecutando ese comando.

¿Qué debo poner en el bloque de ubicación de nginx para hacer eso?

location /gearman-status {
  ?
}

Gracias


6
2017-07-03 11:05


origen




Respuestas:


nginx carece de soporte CGI por lo que no puede ejecutar ningún script directamente. Tendrá que configurar el servidor FastCGI y llamar desde nginx mediante el uso fastcgi_pass en tus location directiva. Hay un ejemplo de dicho envoltorio FastCGI en el wiki de nginx - vea esto enlazar.


4
2017-07-03 13:02



Gracias Alex. FastCGI parece una exageración para este requisito simple, pero como el script de perl se incluye en la wiki para este caso, lo aceptaría. - Mridul Kashatria
el enlace ya no funciona (404) - anneb


Solo puede escribir un pequeño archivo PHP o Perl y colocarlo en la ruta requerida. Este pequeño archivo ejecutará el script o los comandos que desee e imprimirá la salida. Puedes usar el comando `backquotes` para hacer esto.


1
2017-07-03 11:41