Comment configurer un site avec NGINX PHP-FPM

1

Par défaut, votre compte fonctionne en mode PROXY NGINX (httpd) avec Apache-LSAPI pour les serveurs Cloudlinux, et sur serveur cPanel : le mode par défaut est PROXY NGINX mais avec Apache+PHP FPM.

Il est  possible d'activer PHP FPM (performances égales) pour un domaine uniquement de votre compte, mais cela amène des spécificités :
- le fichier htaccess n'a plus d'éffet, les profils Nginx sont là pour compenser, et on peut personnaliser
- le sélecteur PHP habituel n'aura plus effet pour le choix de la version PHP pour le domaine concerné, vous devrez choisir la version PHP
- pour les sites web avec CMS, un profil Nginx adapté doit être choisi parmi notre liste au choix

Vous êtes actuellement en mode PROXY (httpd) par défaut sur le profil 'YOORshop defaut'. C'est à savoir pour revenir en arrière au cas ou...

Changez votre profil Nginx, par votre cpanel, section 'Nginx', cliquez sur 'Nginx-Manager'
Nginx cPanel plugin

Choisissez votre domaine puis cliquez 'Configure'

Nginx cPanel plugin

Vous voyez la configuration actuelle globale. Sur notre capture ci-après en exemple, la configuration est celle par défaut : PROXY, vous voyez le upstream (backend) correspondant nommé 'httpd' (c'est le nom interne du processus apache), et le profil nginx nommé 'YOORshop default' est actif sous le mode PROXY.

Nginx PHP-FPM in cPanel

Pour changer vers PHP, voyez la ligne 'PROXY', changez pour 'PHP', et cliquez 'Select'

'Upstream', choisissez la version PHP voulue pour le domaine
'Template', vous devrez choisir le profil NGINX parmi ceux que nous avons configuré spécialement avec nos sécurités :
YOORshop default (pas de CMS en particulier)
YOORshop Prestashop (CMS Prestashop)
YOORshop Prestashop (CMS Prestashop avec microcache)
YOORshop WordPress (CMS WordPress)
YOORshop Joomla (Joomla CMS)
YOORshop Magento (Magento CMS)
YOORshop OpenCart (OpenCart CMS)
YOORshop Magento (Magento 2 CMS)

YOORshop default cloud (applications utilisant webdav)

YOORshop Prestashop-v2

Puis : 'Apply upstream configuration'

Depuis version prestashop 1.7.2.4 et +, vous devrez configurer dans votre fichier nginx.conf (voir au bas de cet article les explications 'Personnalisation de la configuration Nginx' sinon vous aurez des 404), si par exemple le dossier admin est nommé : admin923vegrny, voici l'ajout :

set $admin_dir /admin923vegrny;

Ensuite, cliquez : 'Reload', vous verrez ensuite 'valid' si le contenu nginx.conf était ok

Pour ajouter des règles personnelles Nginx, voir au bas de cet article....

NB :
- Si il vous manque un profil NGINX, contactez-nous si besoin
- La version PHP du sélecteur PHP dans cPanel n'a plus d'éffet pour les domaines configurés avec PHP-FPM.
En conséquence, pour changer la version PHP d'un domaine déjà configué avec PHP-FPM, vous devez refaire le processus ci-dessus et changer la version PHP en commençant par UPSTREAM. PHP-FPM avec Nginx permet donc de changer la version PHP par domaine.

- certaines règles htaccess peuvent ne plus fonctionner. Si dysfonctionnement ou erreur après installation de plugins, regardez si votre fichier htaccess a été actualisé, il faudra transcrire ceci par une configuration personnalisée, voir en bas de cet article, contactez-nous si besoin pour de l'aide...
- vous pouvez changer la version PHP par domaine (Si vous avez besoin d'un accès distant mysql plus flexible, et changer version PHP sans Nginx, nous contacter)
- si vous voyez des pages érreurs avec code 503, vous devrez nous contacter afin qu'on améliore les réglages PHP-FPM du site
Avertissement :
Nous avons déjà vu, très rare, des sites web php personnalisés entièrement créés par un développeur, qui peuvent ne pas fonctionner avec Nginx PHP-FPM en raison de réécritures codées en dur dans le code php. Ceci peut être résolue soit en changeant le code du site web, soit si vous nous décrivez précisément les règles afin de pouvoir les traduire en langage Nginx.

Voici la liste de profils supplémentaires existant sur le serveur et prêt à l'utilisation avec Nginx FPM  :
SilverStripe
CMS Made Simple
Codeignitor
Moodle
OwnCloud
WHMCS
Laravel
Snipe-IT
Wordpress+FastCGI(microcache)
Magento+Fooman Speedster
Wordpress+WPSuperCache
Wordpress+w3tc
Wordpress+w3tc+minify
CakePHP
Drupal+Boost
Yourls Short URL
Bolt CMS
LiteCart
PicoCMS
Respond
Symfony
Yii
MediaWiki
XenForo
Chevereto v3


Personnalisation de la configuration Nginx

Créez un fichier nommé nginx.conf dans le dossier contenant les fichiers et dossier du site web/domaine concerné
Entrez dans ce fichier ce que vous désirez dans le langage compatible Nginx bien sûr sinon cela ne marchera pas, exemples :
redirections, directive de cache, blocage IP...
NB : toutes les fonctions nginx possible ne fonctionneront pas, nous questionner pour de plus amples informations

Allez sur le plugin 'Nginx-Manager' depuis votre cPanel, choisissez le domaine et 'Configure'
Vous verrez une confirmation dans la section 'Application status' avec la ligne 'nginx.conf', voir la ligne suivante nommée 'nginx.conf reload', et cliquez sur 'Reload' (10-30 secondes pour que le serveur prenne en compte ces réglages), vous devriez voir le statut 'Valid' après quelques secondes si tout est ok.

Exemple de personnalisation de conf nginx :

Vous voyez beaucoup de visites avec user agent Java dans vos logs d'accès. Ce n'est pas forcément inquiétant car Java est utilisé par de nombreux sites pour collecter des données, et des fois les rediffuser à votre avantage dans le web. Mais, si vous voulez les stopper, mettez ceci dans votre fichier nginx.conf :

if ($scanners2 = 1) {

        rewrite ^ https://www.hostingfilters.com/scanners.html permanent;

A lire aussi :
https://support.yoorshop.hosting/knowledgebase/4056/hebergement-web-rocket-nginx-wprocket-plugin-avec-nginx.html

Contactez-nous si besoin pour de l'aide...