Alguma maneira de “incorporar” um script para baixar / excluir um arquivo dentro de um servidor web?

1

Eu preciso fazer um servidor funcionar assim:

Verifique se o arquivo solicitado existe localmente.

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

Eu tinha implementado com sucesso este comportamento com nginx (usando o manipulador de erro 404) e PHP. A coisa é que para implementar isso em outro servidor eu tenho que instalar / compilar nginx e 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 apontar na direção certa?

    
por adrian7 25.08.2012 / 00:00

1 resposta

2

O que você está tentando fazer pode ser realizado com muito simples CGI e um shell script com muita facilidade. Como você ativa / implementa o CGI depende do servidor. Nginx deve ser 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 da 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ê. Isso fica um pouco complicado e está além do escopo do nosso formato de perguntas e respostas.

Veja: Análise de QUERY_STRING em scripts CGI Bash

    
por 25.08.2012 / 00:16