Como os scripts CGI são executados em servidores Web: o cgi-bin explicado

10

A maioria dos servidores web depende de um mecanismo padronizado para executar conteúdo dinâmico. Esse mecanismo é a Common Gateway Interface, ou CGI. Não é mágica. É uma estrutura de pastas e um conjunto de regras que dizem ao servidor para parar de tratar o código como texto estático e começar a tratá-lo como um programa executável.

A chave é um subdiretório específico chamado cgi-bin. Ao configurar um servidor web, você cria esta pasta na raiz do documento. O servidor está configurado para monitorar esse diretório de perto. Qualquer arquivo solicitado de cgi-bin desencadeia um comportamento diferente de uma página HTML padrão.

Em vez de ler o arquivo e enviar seu conteúdo bruto para o seu navegador, o servidor executa o arquivo. A saída gerada por essa execução é o que realmente é entregue ao cliente. Isso permite que o servidor execute código dinamicamente, gerando respostas com base na entrada do usuário, consultas ao banco de dados ou outra lógica dinâmica.

Os programas armazenados neste diretório são normalmente binários compilados, como aqueles produzidos por um compilador C, ou scripts interpretados. Uma linguagem domina este espaço: PERL. Ele tem sido a espinha dorsal dos scripts CGI há décadas porque lida com o processamento de texto e a interação do servidor com notável facilidade.

Considere um exemplo concreto. Você digita este URL em seu navegador: https://www.howstuffworks.com/cgi-bin/search.pl.

O servidor vê o caminho. Ele reconhece que search.pl está dentro da pasta cgi-bin. Ele não envia o código-fonte para você. Ele executa search.pl. O script PERL processa a solicitação (talvez consultando um índice de pesquisa) e retorna o resultado HTML. Seu navegador renderiza esse resultado. O código-fonte nunca toca na sua tela.

Quer tentar isso sozinho? É possível, mas você precisa de duas coisas.

Primeiro, você precisa conhecer uma linguagem de programação adequada para CGI. C e PERL são os padrões tradicionais. Você precisa entender como gerar cabeçalhos HTTP e lidar com entradas do servidor.

Segundo, você precisa de acesso a um servidor web que suporte a execução de CGI. Se você usa um serviço de hospedagem na web pago, provavelmente já possui esse recurso. A maioria dos planos de hospedagem compartilhada inclui suporte CGI por padrão. Verifique a documentação do seu provedor de hospedagem para confirmar. Talvez seja necessário fazer upload de seus scripts especificamente para o diretório cgi-bin.

Se você não possui uma conta de hospedagem, pode instalar um servidor web em sua máquina doméstica. Isso lhe dá controle total. Você pode experimentar diferentes configurações e depurar erros em tempo real. É mais complicado do que usar um serviço hospedado. Você mesmo deve gerenciar o software do servidor, a segurança e as permissões. Mas a curva de aprendizado é acentuada de uma forma útil. Você entenderá exatamente como a web funciona nos bastidores.

Essa configuração funciona porque o servidor é explicitamente instruído a confiar e executar o código nessa pasta específica. Fora do cgi-bin, o servidor trata os arquivos como dados estáticos. Por dentro, eles são programas. Essa distinção é o que torna possíveis as aplicações web dinâmicas.

O servidor executa o programa e envia a saída para o navegador. O código-fonte permanece oculto.

É a forma mais moderna de construir aplicações web? Não. Frameworks modernos geralmente usam arquiteturas diferentes. Mas o CGI estabeleceu o padrão. Provou que os servidores podiam executar programas externos para gerar conteúdo. Cada site dinâmico que você visita hoje traça sua linhagem até essa estrutura de diretório simples.

A fronteira entre conteúdo estático e dinâmico é definida pela configuração do servidor. O **