Développeur FullStack & Devops

Notes et mémos techniques

un CGI en shell script avec Nginx

Il est possible très simplement d’exécuter un script shell sur le serveur web type Nginx avec fcgiwrap, cela permet d’accéder aux outils du système et d’afficher dans un page web les résultats traités.

Etapes

  1. disposer d’un serveur web Nginx qui tourne (ou apt install nginx)
  2. installer le script fcgiwrap par apt install fcgiwrap (installé en tant que daemon)
  3. configurer une section location de Nginx pour faire le lien entre fcgiwrap, le serveur web et le script shell (voir exemple ci-dessous)
  4. un script shell bash ou autres (ne pas oublier le chmod +x)

Exemple de configuration Nginx

location ~ /mon-url-script {
    access_log off;  # pour ne pas logger les accès
    autoindex off;   # empêche l'indexation et affichage des dossier du serveur
    include fastcgi_params; # contient les noms des variables CGI de /etc/nginx/fastcgi_params;
    fastcgi_param SCRIPT_FILENAME      /var/www/cgi/monscript.sh;
    fastcgi_pass unix:/var/run/fcgiwrap.socket;
}

Sécurité

Bien évidemment, exécuter un script shell ou autre sur un serveur web est risqué 💀 Pour éviter les trous de sécurité bien penser à valider tous les inputs 1(tester les scripts avec ABASH, shellcheck, et checkbashisms)

bash
nginx
raspberry-pi
shell
devops
rédigé le 13/09/19 par Behrouze
A proposCheat SheetsOutilsVidéos