Nginx CGI · 2 min read · Jan 23, 2026
Servir des scripts CGI avec Nginx sur Fedora 18 - Page 2
3 Utilisation de Fcgiwrap
Fcgiwrap est un wrapper CGI qui peut être utilisé pour des environnements d’hébergement partagé car il permet à chaque vhost d’utiliser son propre répertoire cgi-bin.
Comme il n’y a pas de paquet fcgiwrap pour Fedora, nous devons le construire nous-mêmes. Tout d’abord, nous installons quelques prérequis :
yum groupinstall 'Development Tools'yum install fcgi-develMaintenant, nous pouvons construire fcgiwrap comme suit :
cd /usr/local/src/
git clone git://github.com/gnosek/fcgiwrap.git
cd fcgiwrap
autoreconf -i
./configure
make
make installCela installe fcgiwrap dans /usr/local/sbin/fcgiwrap.
Ensuite, nous installons le paquet spawn-fcgi qui nous permet d’exécuter fcgiwrap en tant que démon :
yum install spawn-fcgiOuvrez /etc/sysconfig/spawn-fcgi…
vi /etc/sysconfig/spawn-fcgi… et modifiez le fichier comme suit :
| # Vous devez définir certaines options de fonctionnement avant que le service "spawn-fcgi" ne fonctionne. # Si SOCKET pointe vers un fichier, alors ce fichier est nettoyé par le script d'initialisation. # # Voir spawn-fcgi(1) pour toutes les options possibles. # # Exemple : #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" |
Créez les liens de démarrage du système pour spawn-fcgi…
systemctl enable spawn-fcgi.service… et démarrez-le comme suit :
systemctl start spawn-fcgi.serviceVous devriez maintenant trouver le socket fcgiwrap dans /var/run/fcgiwrap.socket, appartenant à l’utilisateur et au groupe nginx.
Maintenant, ouvrez votre fichier de configuration vhost…
vi /etc/nginx/conf.d/www.example.com.vhost… et ajoutez une section location /cgi-bin {} au conteneur server {} :
| server { [...] location /cgi-bin/ { # Désactiver gzip (cela rend les scripts plus lents car ils doivent se terminer # avant d'être compressés) gzip off; # Définir la racine sur /usr/lib (à l'intérieur de cette location, cela signifie que nous # donnons accès aux fichiers sous /usr/lib/cgi-bin) root /var/www/www.example.com; # Socket Fastcgi fastcgi_pass unix:/var/run/fcgiwrap.socket; # Paramètres Fastcgi, inclure les standards include /etc/nginx/fastcgi_params; # Ajuster les paramètres non standards (SCRIPT_FILENAME) fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; } [...] } |
Rechargez nginx :
systemctl reload nginx.serviceEnsuite, nous créons notre répertoire cgi-bin - /var/www/www.example.com/cgi-bin car nous avons défini root /var/www/www.example.com; dans le conteneur location /cgi-bin {} :
mkdir /var/www/www.example.com/cgi-binMaintenant, nous plaçons nos scripts CGI dedans et les rendons exécutables. À des fins de test, je vais créer un petit script Perl Hello World (au lieu de hello_world.cgi, vous pouvez également utiliser l’extension .pl -> hello_world.pl) :
vi /var/www/www.example.com/cgi-bin/hello_world.cgi| #!/usr/bin/perl -w # Dire à perl d'envoyer un en-tête html. # Ainsi, votre navigateur obtient la sortie # plutôt que |Hello world
\n";
chmod 755 /var/www/www.example.com/cgi-bin/hello_world.cgiOuvrez un navigateur et testez le script :
http://www.example.com/cgi-bin/hello_world.cgiSi tout se passe bien, vous devriez obtenir la sortie suivante :

4 Liens
- Nginx: http://nginx.org/
- Wiki Nginx: http://wiki.nginx.org/
- Thttpd: http://acme.com/software/thttpd/
- nginx ThttpdCGI: http://wiki.nginx.org/ThttpdCGI
- nginx Fcgiwrap: http://wiki.nginx.org/Fcgiwrap
À propos de l’auteur
Falko Timme est le propriétaire de Timme Hosting (hébergement web nginx ultra-rapide). Il est le principal responsable de HowtoForge (depuis 2005) et l’un des développeurs principaux d’ISPConfig (depuis 2000). Il a également contribué au livre O’Reilly “Administration système Linux”.
Recevez de nouveaux articles dans votre boîte de réception.
Aucun spam. Désabonnez-vous à tout moment.