¿Alguna forma de "incrustar" un script para descargar/eliminar un archivo dentro de un servidor web?

¿Alguna forma de "incrustar" un script para descargar/eliminar un archivo dentro de un servidor web?

Necesito hacer que un servidor funcione de esta manera:

Compruebe si el archivo solicitado existe localmente.

  • Si está ahí, sírvelo de inmediato.
  • si no, pase REQUEST_URI a un script que lo descargará
  • si el archivo tiene ?delete=1, llame al script para eliminarlo

Implementé con éxito este comportamiento con nginx (usando el controlador de errores 404) y PHP. La cuestión es que para implementar esto en otro servidor tengo que instalar/compilar tanto nginx como php.

Mi pregunta es si hay alguna manera de eliminar php de la pila y poner nginx (o algún otro servidor) para hacer el trabajo. Una forma ideal para mí sería si pudiera ejecutar/llamar scripts/comandos bash directamente desde el servidor.

¿Alguien puede indicarme la dirección correcta?

Respuesta1

Lo que está intentando hacer se puede lograr con CGI simple y un script de shell muy fácilmente. La forma de habilitar/implementar CGI depende del servidor. nginxdeberíaser capaz, pero sé que Apache sí lo es. Consulte la documentación o haga una pregunta específica sobre cómo habilitar CGI en un servidor web determinado.

Lógica bash simple para probar si existe un archivo y mostrarlo:

#!/bin/bash

FILE="/path/to/file"
URI="http://example.com/file"

/bin/echo "Content-type: text/plain"
/bin/echo

if [ -f $FILE ]; then
  /bin/cat $FILE
else
  /usr/bin/wget $URI
fi

Puede analizar ${QUERY_STRING} para obtener su acción de eliminación. Te dejaré la solución completa y el manejo de errores como ejercicio. Se vuelve un poco complicado y está más allá del alcance de nuestro formato de preguntas y respuestas.

Ver:Análisis de QUERY_STRING en scripts Bash CGI

información relacionada