Configuration Nginx avec PHP-FPM et TLS
Configuration pour le tutoriel :
- 1 Vm Debian 10
- 1 go de RAM
- 20 go de disque dur
Installation de apache et de php-fpm avec les extension php communément utilisé dans les applications avec php (Wordpress,OCS Inventory, Bookstack, GLPI etc...)
# Installation de Apache2 et de PHP-FPM
apt install nginx php-fpm
# Installation des extensions PHP communément utilisé
apt install php-fpm php-common php-mbstring php-xmlrpc php-soap php-gd \
php-mysql php-xml php-intl php-mysql php-cli php-ldap php-zip php-curl php-apcu php-cas php-bz2 php-imap php-tidy
Désactiver Apache2 si il est installé avec les paquets PHP
systemctl disable --now apache2
Voici un exemple de fichier de configuration apache avec PHP et HTTPS générique
Je me suis basé sur : Mozilla SSL Configuration Generator Nginx Modern
Placer la configuration web dans /etc/nginx/sites-avalables/Application_Web.conf
server {
# Ecoute IPV4/IPV6 Port 80 HTTP
listen 80 ;
listen [::]:80 ;
# Nom du serveur (doit être le nom dns complet ou FQDN)
server_name NOM_Serveur.domaine.fr
# Redirection http vers https
return 301 https://$host$request_uri;
}
server {
# Ecoute IPV4/IPV6 Port 443 HTTPS
listen 443 ssl http2;
listen [::]:443 ssl http2;
# Nom du serveur (doit être le nom dns complet ou FQDN)
server_name NOM_Serveur.domaine.fr;
# Augmentation taille fichier en envoi sécurisé
client_max_body_size 100m;
client_body_timeout 120s;
# Configuration SSL (protocole,methode d'échange et méthode préféré par le serveur)
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384;
ssl_prefer_server_ciphers off;
# On place nos certificats
ssl_certificate /root/certs/Application_Web/MyCertificate.crt;
ssl_certificate_key /root/certs/Application_Web/MyKey.key;
# Emplacement du repertoire racine du site web
root /var/www/Application/public;
# Fichier index à servir par defaut
index index.php index.html;
# Quand le client demande la racine servir le fichier index.php
location / {
try_files $uri $uri/ /index.php?$query_string;
}
# Configuration PHP 7.3 avec FastCGI
location ~ \.php$ {
fastcgi_index index.php;
try_files $uri =404;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_pass unix:/run/php/php7.3-fpm.sock;
}
}
Créer le lien symbolique vers /etc/nginx/sites-enabled/
ln -s /etc/nginx/sites-available/bookstack.conf /etc/nginx/sites-enabled/
Vérifier le fichier de configuration nginx
nginx -t