Outils pour utilisateurs

Outils du site


lumo:debian_configurer_nginx_pour_executer_des_scripts_cgi_bash_api_rest:accueil

Debian, configurer nginx pour exécuter des scripts cgi bash api rest

Intoduction

Comment configurer Nginx sur Debian pour exécuter des scripts CGI Bash dans le cadre d'une API REST.

Architecture recommandée

Nginx ne supporte pas nativement CGI comme Apache. Vous aurez besoin de fcgiwrap pour faire le pont entre Nginx et vos scripts Bash.

1. Installation des paquets nécessaires

sudo apt update
sudo apt install nginx fcgiwrap spawn-fcgi

2. Configuration de fcgiwrap

Créez ou modifiez /etc/default/fcgiwrap :

FCGI_WRAP_OPTS="--socket /var/run/fcgiwrap.socket"

Créez le socket avec les bons permissions :

sudo mkdir -p /var/run/fcgiwrap
sudo chown www-data:www-data /var/run/fcgiwrap

3. Configuration Nginx

Éditez votre fichier de configuration (ex: /etc/nginx/sites-available/api) :

server {
    listen 80;
    server_name api.votre-domaine.com;
 
    root /var/www/api;
    index index.cgi;
 
    # Scripts CGI
    location ~ \.cgi$ {
        fastcgi_pass unix:/var/run/fcgiwrap.socket;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_param QUERY_STRING $query_string;
        fastcgi_param REQUEST_METHOD $request_method;
        fastcgi_param CONTENT_TYPE $content_type;
        fastcgi_param CONTENT_LENGTH $content_length;
 
        include fastcgi_params;
    }
 
    # Sécurité
    location / {
        try_files $uri $uri/ =404;
    }
}

4. Exemple de script Bash REST API

Créez /var/www/api/users.cgi :

#!/bin/bash
 
# En-têtes CGI
echo "Content-Type: application/json"
echo ""
 
# Méthode HTTP
METHOD="${REQUEST_METHOD:-GET}"
 
case "$METHOD" in
    GET)
        echo '{"status": "success", "message": "Liste des utilisateurs"}'
        ;;
    POST)
        # Lire le corps de la requête
        read -r -n "$CONTENT_LENGTH" BODY
        echo "{\"status\": \"created\", \"body\": \"$BODY\"}"
        ;;
    *)
        echo '{"status": "error", "message": "Méthode non autorisée"}'
        ;;
esac

Rendez-le exécutable :

sudo chmod +x /var/www/api/users.cgi
sudo chown www-data:www-data /var/www/api/users.cgi

5. Démarrage du service

# Démarrer fcgiwrap
sudo systemctl enable fcgiwrap
sudo systemctl start fcgiwrap
 
# Tester la configuration Nginx
sudo nginx -t
 
# Recharger Nginx
sudo systemctl reload nginx

6. Points de sécurité importants

Risque Solution
Injection de commandes Validez strictement tous les paramètres d'entrée
Accès non autorisé Implémentez l'authentification dans vos scripts
Exposition de fichiers sensibles Restreignez les permissions (chmod 750)
Logs sensibles Ne journalisez pas les données sensibles
Timeout Configurez des timeouts appropriés dans Nginx
lumo/debian_configurer_nginx_pour_executer_des_scripts_cgi_bash_api_rest/accueil.txt · Dernière modification : de estro

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki