0Pricing
PHP Academy · Leçon

Configuration de Nginx et PHP-FPM

Configurer Nginx comme proxy inverse vers PHP-FPM pour servir des applications PHP.

Configuration de Nginx et PHP-FPM est une leçon PHP Academy gratuite sur CoddyKit. Ceci est la leçon 1 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage PHP Academy, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours PHP Academy comprend 4 leçons au total.

Pourquoi Nginx + PHP-FPM ?

Nginx est un serveur web haute performance et un proxy inverse. PHP-FPM (gestionnaire de processus FastCGI) gère un groupe de processus PHP. Nginx transmet les requêtes PHP à FPM via FastCGI.

Bloc de serveur Nginx de base

Une configuration Nginx minimale pour une application PHP.

# /etc/nginx/sites-available/myapp
server {
    listen 80;
    server_name example.com;
    root /srv/myapp/public;
    index index.php;

    location / {
        try_files $uri $uri/ /index.php?$query_string;
    }

    location ~ \.php$ {
        fastcgi_pass unix:/run/php/php8.3-fpm.sock;
        fastcgi_index index.php;
        include fastcgi_params;
        fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
    }

    location ~ /\.ht {
        deny all;
    }
}

Directive try_files

try_files $uri $uri/ /index.php?$query_string tente d’abord de servir un fichier statique. S’il est introuvable, la directive utilise index.php comme solution de repli, ce qui permet le routage par contrôleur frontal (Laravel, Symfony).

Configuration du groupe PHP-FPM

Configurez le groupe de processus dans /etc/php/8.3/fpm/pool.d/www.conf.

[www]
pm = dynamic
pm.max_children      = 20
pm.start_servers     = 5
pm.min_spare_servers = 2
pm.max_spare_servers = 8
pm.max_requests      = 500  ; recycle workers to prevent leaks

Socket Unix ou TCP

L’utilisation d’un socket Unix (fastcgi_pass unix:/run/php/php8.3-fpm.sock) est plus rapide que TCP (127.0.0.1:9000) pour les communications entre processus sur la même machine.

HTTPS avec Let's Encrypt

Utilisez Certbot pour obtenir des certificats TLS gratuits.

$ certbot --nginx -d example.com
# Certbot modifies your Nginx config and sets up auto-renewal

Compression Gzip

Activez Gzip pour réduire la taille des réponses.

# nginx.conf or server block:
gzip on;
gzip_types text/plain text/css application/javascript application/json;
gzip_min_length 1024;

Mise en cache des ressources statiques dans le navigateur

Ajoutez des en-têtes de contrôle du cache pour les fichiers statiques.

location ~* \.(js|css|png|jpg|gif|ico|woff2)$ {
    expires 1y;
    add_header Cache-Control "public, immutable";
}

Limitation du débit dans Nginx

Limitez le nombre de requêtes par IP à l’aide du module limit_req : c’est la première ligne de défense, avant même le démarrage de PHP.

http {
    limit_req_zone $binary_remote_addr zone=one:10m rate=10r/s;
}

server {
    location /api/ {
        limit_req zone=one burst=20 nodelay;
    }
}

En-têtes de sécurité

Ajoutez des en-têtes de sécurité à toutes les réponses.

add_header X-Frame-Options "SAMEORIGIN";
add_header X-Content-Type-Options "nosniff";
add_header Referrer-Policy "strict-origin-when-cross-origin";

Recharger ou redémarrer

Après avoir modifié la configuration de Nginx, rechargez-la progressivement, sans interruption de service : nginx -t && nginx -s reload. Après avoir modifié la configuration de PHP-FPM : systemctl reload php8.3-fpm.

Résumé

Configurez Nginx avec un bloc de serveur pointant vers public/index.php via FastCGI. Ajustez les paramètres du groupe PHP-FPM. Utilisez des sockets Unix. Activez HTTPS, Gzip et la mise en cache des fichiers statiques.

Vérification rapide

Que fait try_files $uri $uri/ /index.php?$query_string ?

Questions Fréquemment Posées

La leçon « Configuration de Nginx et PHP-FPM » est-elle gratuite ?

Oui — le texte complet de « Configuration de Nginx et PHP-FPM » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours PHP Academy, passe à CoddyKit PRO. Le cours PHP Academy comprend 4 leçons au total.

Qu'est-ce que j'apprendrai dans « Configuration de Nginx et PHP-FPM » ?

Configurer Nginx comme proxy inverse vers PHP-FPM pour servir des applications PHP. Tu pratiques PHP Academy avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.

Dois-je avoir de l'expérience pour commencer PHP Academy ?

Aucune expérience préalable n'est requise. PHP Academy sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 1 sur 4.

Combien de temps prend la leçon « Configuration de Nginx et PHP-FPM » ?

La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.

Peux-tu écrire et exécuter du code dans cette leçon PHP Academy ?

Oui. Chaque leçon PHP Academy inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.

Toutes les leçons de ce cours

  1. Configuration de Nginx et PHP-FPM
  2. Variables d’environnement et fichiers .env
  3. Déployer avec GitHub Actions
  4. Conteneuriser une application PHP avec Docker
← Retour à PHP Academy