Alguma maneira de "incorporar" um script para baixar/excluir um arquivo em um servidor web?

Alguma maneira de "incorporar" um script para baixar/excluir um arquivo em um servidor web?

Preciso fazer um servidor funcionar assim:

Verifique se o arquivo solicitado existe localmente.

  • se estiver lá, sirva imediatamente
  • caso contrário, passe o REQUEST_URI para um script que irá baixá-lo
  • se o arquivo tiver ?delete=1, chame o script para removê-lo

Implementei com sucesso esse comportamento com nginx (usando o manipulador de erros 404) e PHP. Acontece que para implementar isso em outro servidor eu tenho que instalar/compilar o nginx e o php.

Minha pergunta é se existe uma maneira de remover o php da pilha e colocar o nginx (ou algum outro servidor) para fazer o trabalho. Uma maneira ideal para mim seria se eu pudesse executar/chamar scripts/comandos bash diretamente do servidor.

Alguém pode me indicar a direção certa?

Responder1

O que você está tentando fazer pode ser realizado com CGI simples e um script de shell com muita facilidade. Como você habilita/implementa o CGI depende do servidor. Nginxdeveser capaz, mas eu sei que o Apache é. Consulte a documentação ou faça uma pergunta específica sobre como ativar o CGI em um determinado servidor web.

Lógica bash simples para testar se um arquivo existe e exibi-lo:

#!/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

Você pode analisar ${QUERY_STRING} para obter sua ação de exclusão. Deixarei a solução completa e o tratamento de erros como um exercício para você. Fica um pouco complicado e está além do escopo do nosso formato de perguntas e respostas.

Ver:Análise de QUERY_STRING em scripts Bash CGI

informação relacionada