Ajouter un commentaire

Debian 9 Stretch : configuration complémentaire de Nginx et PHP 7 FPM

Dans la continuité de l'article sur l'installation de notre serveur web Nginx et de PHP 7 FPM, nous allons apporter quelques modifications à notre installation.

Le but est de vous montrer comment procéder pour que vous puissiez ensuite modifier les paramètres qui vous intéressent.

 

Configuration complémentaire de PHP 7.0 FPM

Nous allons commencer par configurer PHP 7.0 FPM.

Comencons par ouvrir le fichier de configuration de PHP 7.0 (après avoir fait une petite copie de sauvegarde...)

sudo cp /etc/php/7.0/fpm/php.ini /etc/php/7.0/fpm/php.ini.orig
sudo nano /etc/php/7.0/fpm/php.ini

Puis vous pouvez modifier les variables ci-dessous.
date.timezone permet de définir le fuseau horaire de notre serveur
upload_max_filesize et post_max_size permettent d'augmenter à 32Mo la taille d'un fichier télécharger en POST via PHP.
error_reporting permet de limiter les infos qui sont enregistrées par défaut dans le fichier de log /var/log/nginx/error.log

upload_max_filesize = 32M
post_max_size = 32M
date.timezone = Europe/Paris
error_reporting = E_ALL & ~E_WARNING & ~E_NOTICE & ~E_DEPRECATED & ~E_STRICT

Il y a beaucoup d'autres variables que vous pouvez consulter ici http://php.net/manual/fr/ini.list.php

 

Configuration complémentaire de Nginx

On ouvre maintenant le fichier de configuration de Nginx

sudo nano /etc/nginx/nginx.conf

Dans ce fichier, localisez la zone http { qui contient les variables à modifier ou ajouter.
Pour activer la compression des pages par défaut, on décommente la ligne gzip on; et on ajoute les options gzip_... supplémentaires indiquées ci-dessous.
La commande server_tokens off; permet de masquer la version de Nginx à vos visiteurs (c'est mieux pour la sécurité de votre site).
Et client_max_body_size 32M; autorise Nginx à uploader des fichiers de 32Mo (c'est en lien direct avec la modification PHP réalisée ci-dessus)

...
http {
    gzip on;
    gzip_static on;
    gzip_http_version 1.1;
    gzip_vary on;
    gzip_comp_level 6;
    gzip_proxied any;
    gzip_types text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript application/javascript text/x-js image/x-icon;
    gzip_buffers 16 8k;

    client_max_body_size 32M;
    server_tokens off;
...

Pour optimiser les performances réseau, je vous conseille également les paramètres ci-dessous.
Vous devez les copier juste après l'option sendfile on; déja présente dans la config par défaut, toujours dans la section http { du fichier /etc/nginx/nginx.conf 
Pour les curieux, allez jeter un oeil sur le site suivant qui explique en détail ces paramètres réseau https://t37.net/optimisations-nginx-bien-comprendre-sendfile-tcp-nodelay-et-tcp-nopush.html

...
http {
    sendfile on;
    tcp_nopush on;
    tcp_nodelay on;
    types_hash_max_size 2048;

    keepalive_timeout  65;
...

Pour ceux qui veulent allez plus loin, je vous oriente vers la page http://nginx.org/en/docs/http/ngx_http_core_module.html

 

Vérification 

Reste à redémarrer les services PHP 7.0 FPM et Nginx pour activer les modifications.

sudo service php7.0-fpm restart
sudo service nginx restart

Enfin, afficher la page phpinfo() de PHP, vous constaterez la prise en compte de vos nouveaux paramètres.

You must have Javascript enabled to use this form.