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-devel

Maintenant, 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 install

Cela 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-fcgi

Ouvrez /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.service

Vous 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.service

Ensuite, 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-bin

Maintenant, 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 (ligne de commande # sur le serveur.) print "Content-type: text/html\n\n"; # imprimer vos balises html de base. # et le contenu de celles-ci. print "Hello World!! \n"; print "

Hello world

\n"; |

chmod 755 /var/www/www.example.com/cgi-bin/hello_world.cgi

Ouvrez un navigateur et testez le script :

http://www.example.com/cgi-bin/hello_world.cgi

Si tout se passe bien, vous devriez obtenir la sortie suivante :

4 Liens

À 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”.

Share: X/Twitter LinkedIn

Recevez de nouveaux articles dans votre boîte de réception.

Aucun spam. Désabonnez-vous à tout moment.