Nginx · 2 min read · Jan 23, 2026
Executando Scripts CGI Com Nginx No Fedora 18 - Página 2
3 Usando Fcgiwrap
Fcgiwrap é um wrapper CGI que pode ser usado para ambientes de hospedagem compartilhada porque permite que cada vhost use seu próprio diretório cgi-bin.
Como não há pacote fcgiwrap para Fedora, devemos construí-lo nós mesmos. Primeiro, instalamos alguns pré-requisitos:
yum groupinstall 'Development Tools'yum install fcgi-develAgora podemos construir o fcgiwrap da seguinte forma:
cd /usr/local/src/
git clone git://github.com/gnosek/fcgiwrap.git
cd fcgiwrap
autoreconf -i
./configure
make
make installIsso instala o fcgiwrap em /usr/local/sbin/fcgiwrap.
Em seguida, instalamos o pacote spawn-fcgi que nos permite executar o fcgiwrap como um daemon:
yum install spawn-fcgiAbra /etc/sysconfig/spawn-fcgi…
vi /etc/sysconfig/spawn-fcgi… e modifique o arquivo da seguinte forma:
| # Você deve definir algumas opções de trabalho antes que o serviço "spawn-fcgi" funcione. # Se SOCKET aponta para um arquivo, então este arquivo é limpo pelo script de inicialização. # # Veja spawn-fcgi(1) para todas as opções possíveis. # # Exemplo : #SOCKET=/var/run/php-fcgi.sock #OPTIONS="-u apache -g apache -s $SOCKET -S -M 0600 -C 32 -F 1 -P /var/run/spawn-fcgi.pid -- /usr/bin/php-cgi" FCGI_SOCKET=/var/run/fcgiwrap.socket FCGI_PROGRAM=/usr/local/sbin/fcgiwrap FCGI_USER=nginx FCGI_GROUP=nginx FCGI_EXTRA_OPTIONS="-M 0700" OPTIONS="-u $FCGI_USER -g $FCGI_GROUP -s $FCGI_SOCKET -S $FCGI_EXTRA_OPTIONS -F 1 -P /var/run/spawn-fcgi.pid -- $FCGI_PROGRAM" |
Crie os links de inicialização do sistema para spawn-fcgi…
systemctl enable spawn-fcgi.service… e inicie-o da seguinte forma:
systemctl start spawn-fcgi.serviceAgora você deve encontrar o socket do fcgiwrap em /var/run/fcgiwrap.socket, pertencente ao usuário e grupo nginx.
Agora abra seu arquivo de configuração vhost…
vi /etc/nginx/conf.d/www.example.com.vhost… e adicione uma seção location /cgi-bin {} ao contêiner server {}:
| server { [...] location /cgi-bin/ { # Desativar gzip (isso faz com que os scripts pareçam mais lentos, pois precisam ser concluídos # antes de serem compactados) gzip off; # Defina a raiz como /usr/lib (dentro desta localização isso significa que estamos # dando acesso aos arquivos sob /usr/lib/cgi-bin) root /var/www/www.example.com; # Socket Fastcgi fastcgi_pass unix:/var/run/fcgiwrap.socket; # Parâmetros Fastcgi, inclua os padrões include /etc/nginx/fastcgi_params; # Ajuste os parâmetros não padrão (SCRIPT_FILENAME) fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; } [...] } |
Recarregue o nginx:
systemctl reload nginx.serviceEm seguida, criamos nosso diretório cgi-bin - /var/www/www.example.com/cgi-bin porque definimos root /var/www/www.example.com; no contêiner location /cgi-bin {}:
mkdir /var/www/www.example.com/cgi-binAgora colocamos nossos scripts CGI nele e os tornamos executáveis. Para fins de teste, criarei um pequeno script Perl Hello World (em vez de hello_world.cgi, você também pode usar a extensão .pl -> hello_world.pl):
vi /var/www/www.example.com/cgi-bin/hello_world.cgi| #!/usr/bin/perl -w # Diga ao perl para enviar um cabeçalho html. # Assim, seu navegador recebe a saída # em vez de |Hello world
\n";
chmod 755 /var/www/www.example.com/cgi-bin/hello_world.cgiAbra um navegador e teste o script:
http://www.example.com/cgi-bin/hello_world.cgiSe tudo correr bem, você deve obter a seguinte saída:

4 Links
- Nginx: http://nginx.org/
- Nginx Wiki: http://wiki.nginx.org/
- Thttpd: http://acme.com/software/thttpd/
- nginx ThttpdCGI: http://wiki.nginx.org/ThttpdCGI
- nginx Fcgiwrap: http://wiki.nginx.org/Fcgiwrap
Sobre O Autor
Falko Timme é o proprietário da Timme Hosting (hospedagem web nginx ultra-rápida). Ele é o principal mantenedor do HowtoForge (desde 2005) e um dos desenvolvedores principais do ISPConfig (desde 2000). Ele também contribuiu para o livro da O’Reilly “Administração de Sistema Linux”.
Receba novas postagens na sua caixa de entrada
Sem spam. Cancele a assinatura a qualquer momento.